WordPressでテーマを作成するとき、投稿ページだけ情報を表示したいとかトップページだけ情報を表示しないようにするとかよくあります。WordPressでは、ページによる出し分けができる条件分岐関数というPHP関数が用意されていて簡単に情報の表示・非表示ができます。WordPressで用意されている条件分岐関数はたくさんあり、とりあえずよく使う条件分岐関数をピックアップして紹介します。

WordPressで用意されている条件分岐関数の一覧

条件分岐関数で帰ってくる値は、すべてbooleanの「true」 or 「false」になります。ではページ表示の条件分岐関数にはどんなものがあるのかみていきましょう。

関数名関数の条件・用途
is_home()「表示設定」のフロントページの表示が「最新の投稿」か固定ページの「投稿ページ」を指定しているとき
is_front_page()「表示設定」のフロントページ表示が「最新の投稿」か固定ページの「フロントページ」を指定しているとき
is_single()投稿ページ・添付ページ・カスタム投稿タイプの個別ページであるとき
引数に投稿IDや投稿スラッグを指定できる配列で複数の指定も可能
is_page()固定ページであるかどうか
引数に固定ページIDや固定ページスラッグを指定できる配列で複数の指定も可能
is_attachment()添付ページであるとき
is_singular()is_single()・is_page()・is_attachment()のどれかに当てはまるとき
引数にカスタム投稿タイプの指定ができる
is_archive()アーカイブページであるとき
is_category()カテゴリーアーカイブページであるとき
引数にカテゴリーIDやカテゴリースラッグを指定できる
配列で複数の指定も可能
is_tag()タグカテゴリーページであるとき
引数にタグIDやタグスラッグを指定できる
配列で複数の指定も可能
is_author()投稿者別のアーカイブページであるとき
引数に投稿者IDや投稿者のニックネームを指定できる
配列で複数の指定も可能
is_date()期間別のアーカイブページであるとき
is_year()年別のアーカイブページであるとき
is_month()月別のアーカイブページであるとき
is_day()日別のアーカイブページであるとき
is_search()検索結果ページであるとき
is_paged()アーカイブページなどページの表示が複数ページに分割されてときの2ページ目以降であるとき
is_404()404ページであるとき

テーマ作成をするときに最低限よく使うであろう条件分岐関数を出してみました。これだけ覚えておけば困ることは少なると思います。条件分岐関数は、基本的に引数は必要ありませんが、特定の条件分岐関数は、引数を指定することにより、さらに条件を絞ることができます。上の表でみるとis_single()・is_page()・is_singular()・is_archive()・is_category()・is_tag()・is_author()が引数を加えることができます。

使用サンプル

実際に使用するには以下の感じで使うことができます。

/* サンプル1 : 投稿ページのときに表示する */
if ( is_single() ) {
    echo '投稿ページです';
}
/* サンプル2 : 投稿ページ以外のときに表示する */
if ( !is_single() ) {
    echo '投稿ページです';
}
/* サンプル3 : 投稿IDが10の投稿ページのときのみ表示する */
if ( is_single( 10 ) ) {
    echo '投稿IDが10です';
}
/* サンプル4 : 投稿IDが10で投稿スラッグが'foo'のときのみ表示する */
if ( is_single( array( 10, 'foo'))) {
    echo '投稿IDが10か投稿スラッグが"foo"です';
}
/* サンプル5 : 投稿IDが10以外の投稿ページに表示する */
if ( is_single() && !is_single( 10 ) ) {
    echo '投稿IDが10以外です';
}

コードは投稿ページのみ出したいときの例です。コメントに書いてある通りの条件分岐の動きをします。他の条件分岐関数で使うときは、サンプル1やサンプル2のような感じで使っていき引数が指定できる関数とかだとサンプル3以降のこともできるといった感じです。

まとめ

WordPressの条件分岐関数はテーマを作成する上で使用頻度がそれなりに高い関数です。紹介した最低限の条件分岐関数以外にも使える関数はいろいろあります。載せた条件分岐関数以外で別の条件分岐関数が必要な場合はWordPress Codexをみるとのってる可能性がありますので調べたりしてください。