ホーム > 投稿記事 > WordPressでよく使う分岐の関数-is_xxx()

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

投稿日 : 2019年09月13日   更新日 : 2019年10月07日
カテゴリー : WordPress
WordPressでよく使う分岐の関数-is_xxx()の画像

こんにちわ、PHPエンジニアのエンジニア婦人(@naho_osada)です。
私はPHPエンジニアとして6年~の経験があります。WordPressは2年~の経験があります。
ここでは主に過去に納品した案件や自サイト運営(エンジニア婦人ノート)で遭遇したことについて書いています。

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 '';
}

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のデフォルトは著者別アーカイブも表示します。

参考

WordPress Codex 日本語版

Google検索も大事だけど、公式サイトを見るのも大事ですね!

楽しい物造りを

NaoLight

自分のブログやサイトを、楽しく作ってもらえたら。

プログラムを使って望み通りに、拡張しやすく、自分の思うように。

できたときに、すごく楽しい!と思ったら。

控えめに言って、「最高です」。

NaoLight -NAOT-(なおらいと、なおと、と呼んでください)はそんな思いをカタチにする、WordPressのテーマです。

ご購入はこちらからお願いします(BOOTHへ移動します)。

Nao Light-NAOT-公式サイト



この記事にコメントする

入力エリアすべてが必須項目です。承認制のため、表示までに時間がかかる場合があります。

CAPTCHA


内容を確認の上、コメントをお願いします。