【WordPress】よく使う条件分岐タグのまとめ
WordPressはその柔軟性から多くのウェブサイト制作者に愛用されています。サイト構築の過程で、特定の条件や状況に応じてコンテンツを表示したり非表示にしたりすることが求められることがあります。例えば、ログインユーザーだけに特定の情報を見せたい、または特定のカテゴリページで異なるレイアウトを適用したい、といった要望です。これらのニーズを簡単に実現するのが、WordPressの「分岐タグ」です。この記事では、これらの便利な分岐タグを詳しく解説し、実際の使用例も交えてご紹介していきましょう。
トップページ
トップページの条件分岐【is_home()、is_front_page()】
デフォルトのトップページの場合
<?php if(is_front_page() && is_home()): // デフォルトのホームページの場合 ?>
<?php endif; ?>
「設定」→「表示設定」が下の画像のような設定の時はこの記述でOKです。また個人的な考えですが、サイトを構築する際、その人その人で作り方は異なりますが、その人の中で構築ルールは出来上がっていると思うので、is_front_page()とis_home()を使い分ける場面は通常であれば発生しないのではないかなと思います。
僕自身もWordPressでサイト制作を10年近く行ってきましたが、この二つを使い分ける場面には今のところ出くわしていません。これからもそういう場面は出てこないと思うのかなと思います。
固定ページを使ったホームページの場合
<?php if(is_front_page()): // 固定ページを使ったホームページの場合 ?>
<?php endif; ?>
「設定」→「表示設定」のホームページの表示を「固定ページ」にして「ホームページ」を選択している場合はis_front_page()
を使用します。
もちろん「デフォルトのトップページの場合」で示した書き方でも問題ありません。
固定ページを使った投稿ページの場合
<?php if(is_home()): // 固定ページを使った投稿ページの場合 ?>
<?php endif; ?>
「設定」→「表示設定」のホームページの表示を「固定ページ」にして「投稿ページ」を選択している場合はis_front_page()
を使用します。
こちらを指定した場合も「デフォルトのトップページの場合」で示した書き方でも問題ありません。
アーカイブページ
アーカイブページの条件分岐【is_archive()】
すべてのアーカイブページの場合
<?php if(is_archive()): // アーカイブページの場合 ?>
<?php endif; ?>
アーカイブページは以下のようなページが含まれます。
- カテゴリーページ
- タグページ
- タクソノミーページ
- カスタム投稿タイプアーカイブページ
- 作成者ページ
- 日付別ページ
なお、is_archive()
はパラメータを指定できないので、スラッグなどで絞り込むことは出来ません。
カスタム投稿アーカイブページの条件分岐 【is_post_type_archive()】
すべてのカスタム投稿アーカイブページ の場合
<?php if(is_post_type_archive()): // すべてのカスタム投稿タイプのアーカイブページの場合 ?>
<?pbp endif; ?>
カスタム投稿タイプの投稿タイプ名で指定する場合
<?php if(is_post_type_archive('works')): // カスタム投稿タイプ名が「works」のアーカイブページの場合 ?>
<?pbp endif; ?>
標準の投稿アーカイブページの場合
<?php if(is_post_type_archive('post')): // 標準のアーカイブページの場合 ?>
<?pnp endif; ?>
標準の投稿アーカイブページの場合、「post」を指定することで分岐することが出来ます。
複数を同時に指定する場合
複数指定する場合はarray()
を使用します。
<?php if(is_post_type_archive(array('works','news'))): // カスタム投稿タイプ名が「works」または「news」のアーカイブページの場合 ?>
<?pbp endif; ?>
カテゴリーページの条件分岐 【is_category()】
すべてのカテゴリーページの場合
<?php if(is_category()): // カテゴリーページの場合 ?>
<?pbp endif; ?>
カテゴリーのIDで条件分岐する場合
<?php if(is_category(1)): // IDが「1」のカテゴリーページの場合 ?>
<?pbp endif; ?>
カテゴリーのスラッグで条件分岐する場合
<?php if(is_category('company')): // スラッグが「company」のカテゴリーページの場合 ?>
<?pbp endif; ?>
複数を同時に指定する場合
<?php if(is_category(array(1,2))): // IDが「1」または「2」のカテゴリーページの場合 ?>
<?php endif; ?>
<?php if(is_category(array('company','recruit'))): // スラッグが「company」または「recruit」のカテゴリーページの場合 ?>
<?pbp endif; ?>
複数指定する場合はarray()
を使用します。
タグページの条件分岐【is_tag()】
すべてのタグページの場合
<?php if(is_tag()): // タグページの場合 ?>
<?pbp endif; ?>
タグのIDで条件分岐する場合
<?php if(is_tag(1)): // IDが「1」のタグページの場合 ?>
<?pbp endif; ?>
タグのスラッグで条件分岐する場合
<?php if(is_tag('company')): // スラッグが「company」のタグページの場合 ?>
<?pbp endif; ?>
複数を同時に指定する場合
<?php if(is_tag(array(1,2))): // IDが「1」または「2」のタグページの場合 ?>
<?php endif; ?>
<?php if(is_tag(array('company','recruit'))): // スラッグが「company」または「recruit」のタグページの場合 ?>
<?pbp endif; ?>
複数指定する場合はarray()
を使用します。
タクソノミーページの条件分岐【is_tax()】
すべてのタクソノミーページの場合
<?php if(is_tax()): // タクソノミーページの場合 ?>
<?pbp endif; ?>
タクソノミーのスラッグで条件分岐する場合
<?php if(is_tax('company')): // スラッグが「company」のタクソノミーページの場合 ?>
<?pbp endif; ?>
複数を同時に指定する場合
<?php if(is_tax(array('company','recruit'))): // スラッグが「company」または「recruit」のタクソノミーページの場合 ?>
<?pbp endif; ?>
複数指定する場合はarray()
を使用します。
タームアーカイブページの条件分岐【is_tax()】
タクソノミーのタームで絞り込む場合もis_tax()
を使用します。
<?php if(is_tax('タクソノミースラッグ', 'タームスラッグ')): ?>
<?php endif; ?>
このように指定することでタームで絞り込んで表示する条件分岐をすることが出来ます。
タームのスラッグで条件分岐する場合
<?php if(is_tax('news', 'report')): // タクソノミー「news」にある「report」のタームアーカイブページの場合?>
<?php endif; ?>
複数を同時に指定する場合
<?php if(is_tax('news', array('report','recruit'))): // タクソノミー「news」にある「report」または「recruit」のタームアーカイブページの場合?>
<?php endif; ?>
複数指定する場合はarray()
を使用します。
作者ページの条件分岐【is_autor()】
すべての作者ページの場合
<?php if(is_autor()): // 作者ページの場合 ?>
<?pbp endif; ?>
作者のIDで条件分岐する場合
<?php if(is_autor(1)): // IDが「1」の作者ページの場合 ?>
<?pbp endif; ?>
作者のニックネーム、ユーザー名で条件分岐する場合
<?php if(is_autor('username1')): // ニックネーム、ユーザー名が「username1」の作者ページの場合 ?>
<?pbp endif; ?>
複数を同時に指定する場合
<?php if(is_autor(array(1,2))): // IDが「1」または「2」の作者ページの場合 ?>
<?php endif; ?>
<?php if(is_autor(array('username1','username2'))): // ニックネーム、ユーザー名が「username1」または「username2」の作者ページの場合 ?>
<?pbp endif; ?>
複数指定する場合はarray()
を使用します。
日付別ページの条件分岐【is_date()、is_month()、is_year()】
日付別ページで条件分岐する場合
<?php if(is_date()): // 日付別ページの場合 ?>
<?php endif; ?>
月別ページで条件分岐する場合
<?php if(is_month()): // 月別ページの場合 ?>
<?php endif; ?>
年別ページで条件分岐する場合
<?php if(is_year()): // 年別ページの場合 ?>
<?php endif; ?>
投稿記事ページ(シングルページ)
投稿記事ページの条件分岐 【is_single()】
すべての投稿記事ページの場合
<?php if(is_single()): // 投稿記事ページの場合 ?>
<?php endif; ?>
投稿記事のIDで条件分岐の場合
<?php if(is_single(1)): // IDが「1」の投稿記事ページの場合 ?>
<?php endif; ?>
投稿記事のスラッグで条件分岐の場合
<?php if(is_single('company')): // スラッグが「company」の投稿記事ページの場合 ?>
<?php endif; ?>
複数を同時に指定する場合
複数指定する場合はarray()
を使用します。
<?php if(is_single(array(1,2))): // IDが「1」または「2」の投稿記事ページの場合 ?>
<?php endif; ?>
<?php if(is_single(array('company','about'))): // スラッグが「company」または「about」の投稿記事ページの場合 ?>
<?pbp endif; ?>
カスタム投稿の投稿記事ページの条件分岐 【is_singular()】
すべての投稿記事・固定ページの場合
is_singular()
はすべての投稿記事・固定ページを表示する条件分岐タグです。
<?php if(is_singular()): // すべての投稿記事・固定ページの場合 ?>
<?pnp endif; ?>
カスタム投稿の投稿記事ページで条件分岐する場合
<?php if(is_singular('works')): // カスタム投稿タイプ名が「works」の投稿記事ページの場合 ?>
<?pnp endif; ?>
投稿記事ページで条件分岐する場合(標準の投稿記事)
<?php if(is_singular('post')): // 標準の投稿記事ページの場合 ?>
<?pnp endif; ?>
標準の投稿記事の場合、「post」を指定することで分岐することが出来ます。
個別ページと分岐する場合
<?php if(is_page()): // 固定ページの場合 ?>
<?php elseif(is_singular()): // 投稿記事ページの場合 ?>
<?php endif; ?>
先に固定ページかどうかの分岐をする方法です。
<?php if(is_singular()): // すべての投稿記事・固定ページの場合 ?>
<?php if(is_page()): // 固定ページの場合 ?>
<?php else: // 固定ページ以外の場合(投稿記事の場合) ?>
<?php endif; ?>
<?php endif; ?>
もう一つの方法はif文の入れ子にして分岐する方法です。
固定ページ
固定ページの条件分岐【is_page()】
すべての固定ページの場合
<?php if(is_page()): // 固定ページの場合 ?>
<?php endif; ?>
固定ページのIDで条件分岐の場合
idの場合はクォーテーションで囲う必要はありません。クォーテーションで囲っても問題ありません。
<?php if(is_page(1)): // IDが「1」の固定ページの場合 ?>
<?php endif; ?>
固定ページのスラッグで条件分岐の場合
スラッグの場合はクォーテーションで囲う必要があります。
<?php if(is_page('company')): // スラッグが「company」の固定ページの場合 ?>
<?php endif; ?>
複数を同時に指定する場合
複数指定する場合はarray()
を使用します。
<?php if(is_page(array(1,2))): // IDが「1」または「2」の固定ページの場合 ?>
<?php endif; ?>
<?php if(is_page(array('company','about'))): // スラッグが「company」または「about」の固定ページの場合 ?>
<?pbp endif; ?>
その他、条件分岐タグまとめ
404ページの条件分岐【is_404()】
<?php if(is_404()): // 404ページの場合 ?>
<?php endif; ?>
アクセスしたページが見つからず404となった際の詳しい解説は以下の記事をご覧ください。
検索結果ページの条件分岐【is_search()】
<?php if(is_search()): // 検索結果ページの場合 ?>
<?php endif; ?>
ダッシュボード、管理画面の条件分岐【is_admin()】
<?php if(is_admin()): // ダッシュボード、管理画面の場合 ?>
<?php endif; ?>
ユーザーログイン済みの条件分岐【is_user_logged_in()】
is_user_loggee_in()
は通常のコーポレートサイト構築などでは使用する機会はあまりないかもしれません。WordPressで会員限定サイトなどを構築する際などの使用することがあります。
ユーザーがログイン中かどうかを判別して、処理を分岐する時に使用します。
<?php if(is_user_logged_in()): // ユーザーログイン済みの場合 ?>
<?php endif; ?>