前回の記事「WordPressでよく使うテンプレートタグのまとめ【インクルード・出力・ループタグ】 」ではいろんなテンプレートタグを紹介しましたが、今回は条件分岐タグと呼ばれるとても便利なテンプレートタグについてまとめていきます。
条件分岐とは?
条件分岐とは、プログラミング上で
指定された条件を満たされているかどうかを判断しプログラムの処理を実行することをいいます。
プログラミングの構文などでは、if文やif..else文、そしてswitch文というものがありますが、WordPressでも同じような処理を行ってくれるものがあります。それが今回紹介する条件分岐タグというテンプレートタグです。
WordPressにおいては、この条件分岐を使うことでページごとに表示するコンテンツを変更できたりデザインなども分けたりすることができます。
主なWordPressの条件分岐タグ
<?php if ( is_home() ): ?> |
トップページ(投稿ページ)が表示されているかを判断します |
<?php if ( is_front_page() ): ?> |
トップページ(固定ページ)が表示されているかを判断します |
<?php if ( is_single() ): ?> |
個別投稿ページが表示されているかを判断します |
<?php if ( is_page() ): ?> |
固定ページが表示されているかを判断します |
<?php if ( is_archive() ): ?> |
アーカイブページが表示されているかを判断します |
<?php if ( is_category() ): ?> |
カテゴリーのアーカイブページが表示されているかを判断します |
<?php if ( is_tag() ): ?> |
タグのアーカイブページが表示されているかを判断します |
<?php if ( is_tax() ): ?> |
カスタム分類のアーカイブページが表示されているかを判断します |
<?php if ( is_paged() ): ?> |
2ページ目以降のページが表示されているかを判断します |
<?php if ( is_user_logged_in() ): ?> |
ユーザーがログインしているかを判断します |
条件分岐パターン別の使い方
条件の指定は上記の条件分岐タグを使用し、次のように記述していきます。
【単一の条件に合った場合】
<?php if ( 条件分岐タグA ) : ?>
// Aの条件に合った場合の処理を記述します
<?php endif; ?>
【単一の条件に合った場合と合わない場合】
<?php if ( 条件分岐タグA ) : ?>
// Aの条件に合った場合の処理を記述します
<?php else: ?>
// Aの条件に合わない場合の処理を記述します
<?php endif; ?>
【複数の条件があり、各条件に合わせる場合】
<?php if ( 条件分岐タグA ) : ?>
// Aの条件に合った場合の処理を記述します
<?php elseif ( 条件分岐タグB ) : ?>
// Aの条件に合わず、Bの条件に合う場合の処理を記述する
<?php elseif ( 条件分岐タグC ) : ?>
// Aの条件とBの条件に合わず、Cの条件に合う場合の処理を記述する
<?php endif; ?>
【複数の条件があり、各条件に合わせる場合と全ての条件に合わない場合】
<?php if ( 条件分岐タグA ) : ?>
// Aの条件に合った場合の処理を記述します
<?php elseif ( 条件分岐タグB ) : ?>
// Aの条件に合わず、Bの条件に合う場合の処理を記述する
<?php elseif ( 条件分岐タグC ) : ?>
// Aの条件とBの条件に合わず、Cの条件に合う場合の処理を記述する
<?php else: ?>
// 全ての条件に合わない場合の処理を記述する
<?php endif; ?>
論理演算子を使ったより複雑な条件の指定
PHPのプログラミングでも登場する、論理演算子という条件式を使うことで複数の条件を掛け合わせることができます。「◯◯かつ□□…」や「◯◯もしくは□□…」という単一の条件では指定ができない場合に使います。
【主な演算子の例】
<?php if ( 条件A && 条件B ): ?> |
条件Aかつ条件B( and:どちらにも合う) |
<?php if ( 条件A || 条件B ): ?> |
条件Aもしくは条件B( or:どちらか一方に合う) |
<?php if ( ! 条件A ): ?> |
条件Aではない( not:条件以外の時) |
<?php if ( 条件A xor 条件B ): ?> |
条件Aもしくは条件Bでかつ、どちらか一方だけに合う |
<?php if ( 条件A == 条件B ): ?> |
条件Aと条件Bが等しい場合 |
<?php if ( 条件A !== 条件B ): ?> |
条件Aと条件Bが等しくない場合 |
<?php if ( 条件A < 条件B ): ?> |
条件Aが条件Bより小さい場合 |
<?php if ( 条件A > 条件B ): ?> |
条件Aが条件Bより大きい場合 |
<?php if ( 条件A <= 条件B ): ?> |
条件Aが条件B以下の場合 |
<?php if ( 条件A >= 条件B ): ?> |
条件Aが条件B以上の場合 |
<< 使用例 >>
<?php if ( is_front_page() || is_page() ): ?>
// フロントページか固定ページが表示された場合の条件分岐
echo '<span>フロントページか固定ページの場合に表示するテキスト</span>';
<?php endif; ?>
いかがでしょうか、少し難しいかもしれませんがこの条件分岐タグを使いこなすことによって、ページ単位でより細かな仕様が指定できるようになります。カスタマイズの幅を広げるためにも是非役立ててみてはいかがでしょうか。