WordPressには、条件によって処理を変えたり、値によって処理したりしなかったりするための「条件分岐」のタグがたくさん用意されています。
目次
単一の条件に合う場合出力
if
の条件分岐タグで、指定した条件に合致するかどうかをチェックして、以下のように記述することで合致した場合表示します。
<?php if ( 条件分岐タグ_01 ) : ?>
// 条件分岐タグ_01の条件に合った場合の処理を記述
<?php endif; ?>
PHPはHTMLと一緒に書くことができ、単一の条件合致の場合は以下のように書くことができます。
<?php if ( is_home() ) : ?>
<!-- トップページの場合ここからの内容を出力 -->
<p>このページはトップページです</p>
<?php endif; ?>
条件分岐する場合に使う<?php else: ?>
を記述することなく、上記のように記述をせずに省略することができます。
単一の条件に合った場合と合わない場合にそれぞれ出力
以下のように記述することで、条件分岐タグ_01に合致しなかった場合、条件分岐タグ_01に合わない場合の処理を出力します。
<?php if ( 条件分岐タグA ) : ?>
// 条件分岐タグ_01に合った場合の処理を記述します
<?php else: ?>
// 条件分岐タグ_01に合わない場合の処理を記述します
<?php endif; ?>
指定した条件に合致しない場合に出力
半角の !
の演算子を条件分岐タグの前につけることで、指定した条件に合致しない場合に出力することができます。
<?php if ( !条件分岐タグ_01 ) : ?>
// 条件分岐タグ_01の条件に合わなかった場合にここの記述を出力
<?php endif; ?>
複数の条件にそれぞれ合致する場合の出力
elseif
と else
を使うことで、指定した色々な条件と出力する内容を設定することができます。
<?php if ( 条件分岐タグ_01 ) : ?>
// 条件分岐タグ_01の条件に合った場合の処理を記述します
<?php elseif ( 条件分岐タグ_02 ) : ?>
// 条件分岐タグ_01の条件に合わず、条件分岐タグ_02の条件に合う場合の処理を記述する
<?php elseif ( 条件分岐タグ_03 ) : ?>
// 条件分岐タグ_01の条件と条件分岐タグ_02の条件に合わず、条件分岐タグ_03の条件に合う場合の処理を記述する
<?php else: ?>
// 全ての条件に合わない場合の処理を記述する
<?php endif; ?>
主な条件分岐タグ
WordPressの条件分岐タグは、便利なものがたくさんあり、その指定した条件に合致するかどうかをチェックして処理を行います。
多数ある中で、以下はよく使われることが比較的多い条件分岐タグです。
条件分岐タグ | 内容 |
---|---|
|
トップページ(投稿ページ)が表示されているかを判断します |
|
トップページ(固定ページ)が表示されているかを判断します |
|
個別投稿ページが表示されているかを判断します |
|
投稿タイプ(カスタム投稿タイプ等)が表示されているかを判断します |
|
固定ページが表示されているかを判断します |
|
アーカイブページが表示されているかを判断します |
|
カテゴリーのアーカイブページが表示されているかを判断します |
|
記事がそのカテゴリーに該当するかを判断します |
|
タグのアーカイブページが表示されているかを判断します |
|
その記事で指定したタグが使用されているかを判断します |
|
カスタム分類のアーカイブページが表示されているかを判断します |
|
2ページ目以降のページが表示されているかを判断します |
|
ユーザーがログインしているかを判断します |
|
モバイル端末(タブレットを含む)で閲覧しているかを判断します |
条件分岐タグの中身の書き方
特定の条件に合致させて何かを出力する場合など、条件分岐タグの中身には is_single('投稿ID')
などのように記述します。
以下は、指定した投稿ページで条件分岐を行う書き方です。
<?php if( is_single('投稿ID') ) : ?>
<!-- 上記で指定した記事でのみ以下を出力 -->
<?php else: ?>
<!-- 上記で指定した記事以外、以下を出力 -->
<?php endif; ?>
指定した条件分岐タグに
の中に半角カンマarray()
,
区切りで記述することで、複数の場合など色々な条件を設定することができます。
以下は、指定した投稿IDのいずれかに該当した場合出力させる条件分岐です。
<?php if( is_single( array('投稿ID','投稿ID','投稿ID') ) ) : ?>
<!-- 上記で指定した記事でのみ以下を出力 -->
<?php else: ?>
<!-- 上記で指定した記事以外、以下を出力 -->
<?php endif; ?>
指定したカスタムフィールドに入力がある場合出力
if
の中に get_field
を使用して条件を指定し、and
で複数条件を満たした場合に、記述した内容を出力します。
<?php if( get_field('カスタムフィールド1') and get_field('カスタムフィールド2') and get_field('カスタムフィールド3') ): ?>
<!-- 条件合致した場合ここの内容を出力 -->
<?php else: ?>
<?php #条件に当てはまらないので表示なし ?>
<?php endif; ?>
演算子を使った条件の指定
条件分岐タグ | 内容 |
---|---|
|
条件Aかつ条件B( and:どちらにも合う) |
|
条件Aもしくは条件B( or:どちらか一方に合う) |
|
条件Aではない( not:条件以外の時) |
|
条件Aもしくは条件Bでかつ、どちらか一方だけに合う |
|
条件Aと条件Bが等しい場合 |
|
条件Aと条件Bが等しくない場合 |
|
条件Aが条件Bより小さい場合 |
|
条件Aが条件Bより大きい場合 |
|
条件Aが条件B以下の場合 |
|
条件Aが条件B以上の場合 |
演算子を使った条件は多少複雑なので、記述後見ても分かるよう、:
や;
の後にコメントアウトを書いておくのがおすすめです。
PHPでは、以下のように //
の後にコメントアウトを記述することができます。
<?php if ( wp_is_mobile() && is_single() ) : // 「モバイル」かつ「記事ページ」のとき ?>
<!-- ここに出力する内容 -->
<?php endif; ?>
注意点
条件分岐の記述で似たような記号に コロン(:)
と セミコロン(;)
の記述がありますが、間違った記述だとページが表示されなくなるので注意が必要です。
ifとelseifの後はコロン(:)
を記述して、if() :
とelseif() :
というように書きます。この時、セミコロン(;)
を書くとエラーになります。
一方、endifの後にはセミコロン(;)
を記述して、endif ;
というように書きましょう。