WordPress ショートコード 条件分岐(1)

2019年4月29日

画面毎に違う処理を行わせたり、引数によって違う処理を行うためには、条件分岐を行う必要があります。

if文とswitch文

if文

if (条件) {
    // 条件がTRUEの時実行
}

基本です。条件がTRUE(真)の時に、実行したい処理を記入します。

if (条件) {
    // 条件がTRUEの時実行
} else {
    // 条件がFALSEの時実行
}

条件がTRUEになったときと、FALSE(偽)になったときの処理を記入します。

if (条件1) {
    // 条件1がTRUEの時実行
} else if (条件2) {
    // 条件1がFALSEで、条件2がTRUEの時実行
} else {
    // 条件1・2がFALSEの時実行
}

条件文は、このように何度も繰り返し記入することができます。
条件1がTRUEの場合は、以降の処理は行われず、ifブロックは終了します。

switch文

switch (対象) {
    case 値1:
        処理1
        break;
    case 値2:
        処理2
        break;
     ・
     ・
    default:
        デフォルト処理
}

switch文は、if文を繰り返したような処理が簡単に書けます。
対象の値が、値1と等しい時、処理1を行います。
注意しないといけないのが、breakです。各処理の後にbreakを書くことにより、if文と同じような振る舞いをしますが、処理1の後にbreakを書かないと、処理2からデフォルト処理まで処理が行われます。

10行目のdefault:は、それまでの条件に、全て合わなかった時、処理されます。

条件文の書き方

比較演算子

if文の条件には、主に比較演算子を用い真(TRUE)と偽(FALSE)を返す比較を行います。

if (左辺 演算子 右辺)

比較演算子について

演算子 意味
== 等しいとTRUE
!= 等しくないとTRUE
> 右辺より大きいとTRUE
>= 右辺以上でTURE
< 右辺より小さいとTRUE
<= 右辺以下でTURE

例:if (10 > 3) TRUE
  if (10 < 3) FALSE

AND条件とOR条件

if文の条件は1つだけでなく、複数の条件を組み合わせて1つの条件にすることができます。それを可能にするのがANDとORです。

演算子 意味
and (もしくは&&) かつ
or (もしくは||) または

andは、両方がTRUEの時に、真(TRUE)を返す
例:if (1 == 1 and 2 == 2) ⇨ TRUE

andは、どちらかが、FALSEの時は、偽(FALSE)を返す
例:if (1 == 1 and 1 == 2) ⇨ FALSE

orはどちらかが、TRUEなら、真(TRUE)を返す
例:if (1 == 1 or 1 == 2)  ⇨ TRUE

ここでは、分かりやすいように、数字同士を比較していますが、通常は引数を、数字や文字と比べます。

if文とswitch文の比較

ここでは、当サイトでも使用している簡単なショートコードを例にif文とswitch文の比較をします。

if文の例

function fncCode_title1 ($atts) {
	extract (shortcode_atts (array (
		'file' => "",
	), $atts));
	if ($file=="f")
		return ("functions.php");
	else if ($file=="h")
		return ("HTML出力結果");
	else if ($file=="w")
		return ("Wordpress投稿画面");
	return ("ファイルの種類を入力して下さい");
}
add_shortcode('codetitle1', 'fncCode_title1');

switch文

function fncCode_title2 ($atts) {
	extract (shortcode_atts (array (
		'file' => "",
	), $atts));
	switch ($file) {
		case 'f':
			return ("functions.php");
		case 'h':
			return ("HTML出力結果");
		case 'w':
			return ("Wordpress投稿画面");
		default:
			return ("ファイルの種類を入力して下さい");
	}
}
add_shortcode('codetitle2', 'fncCode_title2');

使い方と解説

Wordpress投稿画面

[codetitle1 file='f']  ← if文
[codetitle2 file='f']  ← switch文

HTML出力結果

HTML出力結果  ← if文
HTML出力結果  ← switch文

ここまで、このサイトで学んだ方なら、使い方を説明する必要は無いと思いますが、if文もswitch文も同じ結果を返します。

さきほど、switch文で注意をし、処理の後にbreakが必要と書きましたが、この例ではbreakがありません。この場合は、returnで、この関数の処理が終了してしまうので、必要無いパターンとなっています。