WordPress ショートコード 条件分岐(1)
画面毎に違う処理を行わせたり、引数によって違う処理を行うためには、条件分岐を行う必要があります。


チビ子
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で、この関数の処理が終了してしまうので、必要無いパターンとなっています。