WordPressのテンプレートファイルの作成・編集時に、ページによって処理を分けたい時があるかと思います。
そんな時に使える条件分岐タグがWordpressでは用意されています。
今回はよく使用される、覚えておくと便利な条件分岐タグを解説していきます。
WordPressの条件分岐タグとは
WordPressの条件分岐タグは、条件に応じて「true(真)」か「false(疑)」を返す関数の事を言います。
これを使用する事で、ページの種類などによって内容を変更する事が可能です。
条件分岐タグはPHPのif文で以下のように記述します。
PHPファイルに記述しますので、記事内やウィジェット内に記述しても動きませんので注意してください。
<!-- 条件に一致するかしないかで処理を分ける -->
<?php if (条件) : ?>
条件に一致する場合の処理
<?php else: ?>
条件に一致しない場合の処理
<?php endif; ?>
<!-- 条件に一致する場合のみ処理する -->
<?php if (条件) : ?>
条件に一致する場合の処理
<?php endif; ?>
<!-- 条件に一致するかしないかで処理を分ける -->
<?php if (条件1) : ?>
条件1に一致する場合の処理
<?php elseif (条件2) : ?>
条件2に一致する場合の処理
<?php else: ?>
いずれの条件にも一致しない場合の処理
<?php endif; ?>
上記のように基本的には条件にあてはまる場合の処理を記述しますが、条件の関数の前に「!」を付ける事で否定形のif文にする事も可能です。その他にも、論理演算子の使用や複数の条件を使用する事も出来ます。
トップページ
<?php if(is_front_page() || is_home()): ?>
トップページの場合の処理
<?php endif; ?>
is_front_page()とis_home()は、Wordpressの設定内容によってそれぞれ条件に一致する内容は違うのですが、トップページを判別する条件としてはこちらで通常は問題ないかと思います。
固定ページ
<?php if(is_page()): ?>
<!-- 固定ページの場合 -->
<?php endif; ?>
固定ページかどうかの判別ができます。
以下のように引数に固定ページID・固定ページタイトル・スラッグを指定する事で、個別の固定ページかどうかの判別ができます。
複数の条件を指定する場合は配列(array())で指定します。
<?php if(is_page('5')): ?>
<!-- 固定ページIDが「5」の場合 -->
<?php endif; ?>
<?php if(is_page('about')): ?>
<!-- 固定ページのスラッグが「about」の場合 -->
<?php endif; ?>
<?php if(is_page('このサイトについて')): ?>
<!-- 固定ページ名が「このサイトについて」の場合 -->
<?php endif; ?>
<?php if(is_page(array('5','about'))): ?>
<!-- 固定ページIDが「5」、または固定ページのスラッグが「about」の場合 -->
<?php endif; ?>
投稿ページ&カスタム投稿タイプの投稿ページ
以下のようにする事で、投稿ページやカスタム投稿ページかどうかの判別ができます。
投稿ページ
<?php if(is_single()): ?>
<!-- 投稿ページの場合 -->
<?php endif; ?>
投稿ページかどうかの判別ができます。
以下のように引数に記事ID・記事タイトル・スラッグを指定する事で、個別の投稿ページかどうかの判別ができます。
複数の条件を指定する場合は配列(array())で指定します。
<?php if(is_single('5')): ?>
<!-- 記事IDが「5」の場合 -->
<?php endif; ?>
<?php if(is_single('hello-world')): ?>
<!-- 記事のスラッグが「hello-world」の場合 -->
<?php endif; ?>
<?php if(is_single('Hello world!')): ?>
<!-- 記事のタイトルが「Hello world!」の場合 -->
<?php endif; ?>
<?php if(is_single(array('5','hello-world'))): ?>
<!-- 記事IDが「5」、または記事のスラッグが「hello-world」の場合 -->
<?php endif; ?>
カスタム投稿タイプの投稿ページ
<?php if(is_singular('blog')): ?>
<!-- カスタム投稿タイプ「blog」の投稿ページの場合 -->
<?php endif; ?>
is_singular()は引数に投稿タイプのみ(ID・投稿タイプ名・スラッグ)含める事ができます。上記の場合はカスタム投稿タイプのスラッグが「blog」の投稿ページの場合となります。
引数に何も指定しない場合は、is_single()、is_page()、is_attachment()を指定している状態となります。(is_single()は投稿ページ、is_page()は固定ページ、is_attachment()は添付ファイルページ)
詳しくは、WordPress関数is_single()とis_singular()の違いと使い分けについて【Worpress】で解説していますのでご覧ください。
アーカイブページ&カスタム投稿タイプのアーカイブページ
<?php if(is_archive()): ?>
<!-- アーカイブページの場合 -->
<?php endif; ?>
上記の条件分岐タグで、アーカーイブページかどうかの判別ができます。
is_archive()には以下の内容が含まれますが、引数は指定できません。
- カテゴリーアーカイブ
- タグアーカイブ
- 日付・年・月・日別アーカイブ
- 著者アーカイブ
- カスタムタクソノミーアーカイブ
- カスタム投稿アーカイブ
カスタム投稿タイプのアーカイブページ
カスタム投稿タイプのアーカイブページかどうか判別する場合は以下の記述でできます。
<?php if(is_post_type_archive('blog')): ?>
<!-- カスタム投稿タイプ「blog」のアーカイブページの場合 -->
<?php endif; ?>
引数にスラッグを指定する事で、特定のカスタム投稿タイプを指定する事ができます。複数の条件を指定する場合は配列(array())で指定します。
引数に何も指定しなかった場合は、すべてのカスタム投稿タイプのアーカイブとなります。
詳しくは、WordPress関数is_archiveとis_post_type_archiveの違いと使い方について【WordPress】で解説していますのでご覧ください。
カテゴリーアーカイブ
<?php if(is_category()): ?>
<!-- カテゴリーアーカーイブページの場合 -->
<?php endif; ?>
カテゴリーアーカイブページかどうかの判別ができます。
以下のように引数にカテゴリーID・カテゴリー名・スラッグを指定する事で、個別のカテゴリーアーカーイブページかどうかの判別ができます。
複数の条件を指定する場合は配列(array())で指定します。
<?php if(is_category('5')): ?>
<!-- カテゴリーIDが「5」の場合 -->
<?php endif; ?>
<?php if(is_category('news')): ?>
<!-- カテゴリーのスラッグが「news」の場合 -->
<?php endif; ?>
<?php if(is_category('ニュース')): ?>
<!-- カテゴリー名が「ニュース」の場合 -->
<?php endif; ?>
<?php if(is_category(array('5','news'))): ?>
<!-- カテゴリーIDが「5」、またはカテゴリーのスラッグが「news」の場合 -->
<?php endif; ?>
カスタムタクソノミーアーカイブ
<?php if(is_tax()): ?>
<!-- カスタムタクソノミーのアーカイブページの場合 -->
<?php endif; ?>
カスタムタクソノミーのアーカイブページかどうかの判別ができます。
以下のように引数にカスタムタクソノミーID・カスタムタクソノミー名・スラッグを指定する事で、個別のカスタムタクソノミーのアーカーイブページかどうかの判別ができます。
複数の条件を指定する場合は配列(array())で指定します。
<?php if(is_tax('5')): ?>
<!-- カスタムタクソノミーIDが「5」の場合 -->
<?php endif; ?>
<?php if(is_tax('news_category')): ?>
<!-- カスタムタクソノミーのスラッグが「news_category」の場合 -->
<?php endif; ?>
<?php if(is_tax('ニュースカテゴリー')): ?>
<!-- カスタムタクソノミー名が「ニュースカテゴリー」の場合 -->
<?php endif; ?>
<?php if(is_tax(array('5','news_category'))): ?>
<!-- カスタムタクソノミーIDが「5」、またはカスタムタクソノミーのスラッグが「news_category」の場合 -->
<?php endif; ?>
特定のカスタムタクソノミーのタームを指定する場合
上記のようなカスタムタクソノミーの指定だけではなく、タームも指定する事ができます。
<?php if(is_tax('news_category'), 10): ?>
<!-- カスタムタクソノミー「news_category」のタームIDが10の場合 -->
<?php endif; ?>
上記の場合、カスタムタクソノミー「news_category」のタームID(10)のアーカイブページとなります。
こちらも同様にタームID・ターム名・タームのスラッグを指定できます。
複数の条件を指定する場合は配列(array())で指定します。
タグアーカイブ
<?php if(is_tag()): ?>
<!-- タグアーカーイブページの場合 -->
<?php endif; ?>
タグアーカイブページかどうかの判別ができます。
以下のように引数にタグID・タグ名・スラッグを指定する事で、個別のタグアーカーイブページかどうかの判別ができます。
複数の条件を指定する場合は配列(array())で指定します。
<?php if(is_tag('5')): ?>
<!-- タグIDが「5」の場合 -->
<?php endif; ?>
<?php if(is_tag('tag')): ?>
<!-- タグのスラッグが「tag」の場合 -->
<?php endif; ?>
<?php if(is_tag('タグ')): ?>
<!-- タグ名が「タグ」の場合 -->
<?php endif; ?>
<?php if(is_tag(array('5','tag'))): ?>
<!-- タグIDが「5」、またはタグのスラッグが「tag」の場合 -->
<?php endif; ?>
日付・年・月・日別アーカイブ
それぞれ日付・年・月・日別で条件を指定する事ができます。
日付別
<?php if(is_date()): ?>
<!-- 日付別(年・月・日別いずれも含む)ページの場合 -->
<?php endif; ?>
日付別(年・月・日別を含む)アーカイブページかどうかの判別ができます。
年別
<?php if(is_year()): ?>
<!-- 年別の記事一覧ページの場合 -->
<?php endif; ?>
年別アーカイブページかどうかの判別ができます。
月別
<?php if(is_month()): ?>
<!-- 月別の記事一覧ページの場合 -->
<?php endif; ?>
月別アーカイブページかどうかの判別ができます。
日別
<?php if(is_day()): ?>
<!-- 日別の記事一覧ページの場合 -->
<?php endif; ?>
日別アーカイブページかどうかの判別ができます。
検索結果ページ
<?php if(is_search()): ?>
<!-- 検索結果ページの場合 -->
<?php endif; ?>
検索結果ページかどうかの判別ができます。
著者アーカイブ
<?php if(is_author()) : ?>
<!-- 著者アーカイブページの場合 -->
<?php endif; ?>
著者アーカイブページかどうかの判別ができます。
以下のように引数を指定する事で、著者別、複数の著者の判別も可能となります。
<?php if(is_author('5')) : ?>
<!-- ユーザーIDが「5」の著者アーカイブページ -->
<?php endif; ?>
<?php if(is_author(array('5', '10'))) : ?>
<!-- ユーザーIDが「5」か「10」の著者アーカイブページ -->
<?php endif; ?>
引数にはユーザーIDの他にも、著者のニックネームの指定もできます。
複数の条件を指定する場合は配列(array())で指定します。
404ページ
<?php if(is_404()) : ?>
<!-- 404ページの場合 -->
<?php endif; ?>
404ページの場合の判別ができますが、あまり使用する機会は無いかと思われます。
プライバシーポリシーページ
<?php if(is_privacy_policy()) : ?>
<!-- プライバシーポリシーページの場合 -->
<?php endif; ?>
WordPress管理画面メニューの「設定」→「プライバシー」から、特定の固定ページをプライバシーポリシーページに指定出来ます。この指定したページの判別に使用します。
管理画面へのログイン状態
<?php if(is_user_logged_in()): ?>
<!-- WordPress管理画面にログインしている場合 -->
<?php endif; ?>
WordPressの管理画面にログインしているかどうかの判別ができます。
会員制のサイトの場合や、仮アップなどで管理画面にログインしている場合のみ表示させたい場合に利用できます。
PCとモバイルデバイス
<?php if(wp_is_mobile()) : ?>
<!-- スマートフォンやタブレットなどのモバイル端末の場合 -->
<?php else: ?>
<!-- PCの場合 -->
<?php endif; ?>
端末情報を取得し、スマートフォンやタブレットなどのモバイル端末かどうかの判別ができます。
さいごに
いかがでしたでしょうか。
今回は、Wordpressでよく使う・覚えておくと便利な条件分岐を解説しました。
条件分岐タグを使いこなす事で、レイアウトの変更などのカスタマイズがスムーズに行えるようになりますので、この機会にぜひ覚えてみてください。