WordPress
更新日 : 2022年5月13日
投稿日 : 2019年9月13日

WordPressでよく使う分岐の関数-is_xxx()

WordPressでよく使う分岐の関数-is_xxx()の画像

こんにちわ、PHPエンジニアのエンジニア婦人(@naho_osada)です。
私はPHPエンジニアとして8年~の経験があります。

WordPressは内部で多くの関数が用意されています。調べれば「こんなものがあったのか!」と驚くことも。

サイトを細かく設定行く上で欠かせない、そんなWordPress関数をご紹介します。

何れも各ファイル、header.php、footer.php、sidebar.phpなどの「全表示で必ず使用するファイルや、functions.phpなどで多用します。

is_single()

個人的によく使用する第一位です。

「投稿ページかどうか」を判定します。返却はtrue/falseです。

使用例

// 投稿ページのみ、サイドバーを表示する
if(is_single()) {
    get_sidebar(); // sidebar.phpを呼び出す
}

is_page()

こちらは「固定ページかどうか」を判定します。返却はtrue/falseです。

使用例

// 固定ページのみ、投稿日時を表示する
if(is_page()) {
    echo date('y年n月d日', strtotime($post->post_date));
}

is_front_page()

「サイトのトップページ(固定ページ)かどうか」を判定します。返却はtrue/falseです。

使用例

// トップページはぱんくずを表示しない
if(!is_front_page()) {
    // パンくずリストを表示する
}

is_home()

「最新投稿を表示しているトップページかどうか」を判定します。返却はtrue/falseです。

使用例

// 最新投稿の場合はサイドバーを表示する
if(!is_front_page() || is_home()) {
    get_sidebar();
}

補足-is_front_pageとis_homeの違い

is_front_page()の如何にもトップページといった関数もあるので混乱しやすいのですが、is_home()はトップページの中でも、「最新の投稿を表示」状態かどうかを見ています。

サイトのトップページに「最新の投稿を表示」していると、is_front_page()では必ずfalseを返します。トップページなのに、falseです。

is_front_page()はあくまでトップページ設定されている固定ページを判定しています。最新の投稿を表示するトップページのときに処理させたい場合はis_home()で判定します。

ブログ型サイトでなければis_home()は使わないので、WordPress案件を請け負っていると案外見ない関数かもしれません。

こちらでも書いています。is_home()の罠-is_front_page()やis_single()との違い-

is_archive()

「カテゴリー、タグ、日付に関するアーカイブかどうか」を判定します。返却はtrue/falseです。

カテゴリー、タグ、日付それぞれでさらに細かいアーカイブを判定したい場合は後述のis_category() / is_tag() / is_date() で判定します。

使用例

// アーカイブの場合は、サイドバーを表示しない
if(!is_archive()) {
    get_sidebar();
}

is_cartegory()

「表示中のページがカテゴリーアーカイブかどうか」を判定します。返却はtrue/falseです。

// カテゴリーアーカイブの場合は、サイドバーを別のものにする
if(is_category()) {
    get_sidebar('category'); // 任意のサイドバーを指定
}

is_tag()

「表示中のページがタグアーカイブがどうか」を判定します。返却はtrue/falseです。

// タグアーカイブの場合は、サイドバーを別のものにする
if(is_tag()) {
    get_sidebar('tag'); // 任意のサイドバーを指定
}

is_date()

「表示中のページが日付に関するアーカイブかどうか」を判定します。返却はtrue/falseです。

// 日付アーカイブの場合は、サイドバーを別のものにする
if(is_date()) {
    get_sidebar('date'); // 任意のサイドバーを指定
}

補足-日付アーカイブを年、月、日、時間でそれぞれで分けたい

年別アーカイブか、月別アーカイブか、日付アーカイブか、時間アーカイブかのすべて判定することができます。

使いたいタイミングはそれほどないかもしれませんが、参考までに列挙しておきます。返却は何れもtrue/falseです。

is_year()

年別アーカイブを判定します。

is_month()

月別アーカイブを判定します。

is_day()

日付アーカイブを判定します。

is_time()

時間アーカイブを判定します。※今のところ、使用したことはありません。出現頻度は低いでしょう。

is_search()

「検索結果のページかどうか」を判定します。返却はtrue/falseです。

使用例

// 検索結果の場合は、テンプレートを変える
if(is_search()) {
    get_template_part('contents'); // 任意のテンプレートを指定
}

is_404()

「404ページかどうか」を判定します。返却はtrue/falseです。

使用例

// 404の場合は、norobot nofollow
if(is_404()) {
    echo '<meta name"robots"="" content="noindex, nofollow">';
}

is_page_template()

指定の固定ページテンプレートかどうかを判定します。返却はtrue/falseです。

テンプレート名は「aaa.php」のように、ファイル拡張子まで記述します。

使用例

// 指定テンプレートの場合は追加でCSSを読み込む(functions.phpなどで使用)
if(is_page_template('inquiry.php')) {
    wp_enqueue_style('inquiry-style', $template . '/inquiry.css'); 
}

is_author()

「表示中のページが著者別アーカイブかどうか」を判定します。返却はtrue/falseです。

使用例

// 著者別アーカイブの場合はトップページにリダイレクト(functions.phpなどで使用)
if(is_author()) {
    wp_redirect( home_url());
    exit;
}

補足-セキュリティとしては、著者別アーカイブは使用しない方が望ましい

著者別アーカイブを使用すると、URLで著者名、即ちWordPressのログインIDがわかってしまいます。そのため、必要がなければ著者別アーカイブは使用しない方が望ましいです。

使用しない場合、テーマ内ファイルに記述を追加する必要があります。WordPressのデフォルトは著者別アーカイブも表示します。

PR

※本サイトはアフィリエイトプログラムを利用して商品を紹介しています。