表示中の固定ページが子ページかどうか判別する

WordPressで固定ページを表示中かどうかを判別するには「 is_page() 」、特定の固定ページを表示中かどうかを判別するには「 is_page(ページID) 」や「 is_page('ページスラッグ') 」といった条件分岐タグを使用することができますが、「表示中の固定ページが子ページか」「表示中の固定ページが特定のページの子ページか」を判別するための条件分岐タグは標準では用意されていません。

本レシピでは、「表示中の固定ページが子ページか」「表示中の固定ページが特定のページの子ページか」を判別する方法を紹介します。

表示中の固定ページが子ページか判別する

表示中の固定ページが子ページかを判別するには、テンプレートファイル内で下記のように記載します。

条件分岐タグ - WordPress Codex 日本語版」に記載してある内容です。is_page() && $post->parent > 0 は「固定ページ、かつ、親のページIDが0より大きい」という意味になります。(親のページIDが0の場合はこのページに親ページが設定されていないということなので、0より大きいかを見ることで親ページがあるか確認している)

※ 「<?php ?>」で囲われていない箇所に上記のコードを記載しても動作しません。「<?php ?>」で囲われている箇所に配置してください。(以下同様)

表示中の固定ページが特定のページの子ページか判別する (ID)

表示中の固定ページがある特定のページの子ページかどうかをIDを用いて簡単に判別するには、テンプレートファイル内で下記のように記載します。

上記の例では、現在表示中の固定ページがID「123」のページの子ページかどうかを判別します。(実際には「123」は調べたいページのIDに変更してください)

※ このコードは例えば「ページ1 (ID:123) > ページ2 (ID:456) > ページ3 (ID:789)」というような2段階以上の階層がある場合、ページ2では「これはID:123のページの子ページです」と表示されますが、ページ3では表示されません。(言い換えると、「直下の子ページには対応していますが、孫ページには対応していない」ということです)

表示中の固定ページが特定のページの子ページか判別する (スラッグ)

表示中の固定ページがある特定のページの子ページかどうかをスラッグを用いて簡単に判別するには、テンプレートファイル内で下記のように記載します。

上記の例では、現在表示中の固定ページがスラッグ「sample-page」のページの子ページかどうかを判別します。(実際には「sample-page」は調べたいページのスラッグに変更してください)

※ このコードも直下の子ページには対応していますが、孫ページには対応していません。

is_page() に近い形の条件分岐タグを定義して使う (孫ページ対応)

is_page() 」「 is_page(ページID) 」「 is_page('ページスラッグ') 」のような is_page() に近い形で「 is_subpage() 」「 is_subpage(ページID) 」「 is_subpage('ページスラッグ') 」とすれば「子ページか」「特定のIDを持つページの子ページか」「特定のスラッグを持つページの子ページか」を孫ページ込みで判別できるようにしたい場合は、まず functions.php に下記のように記載します。

※孫ページにも対応させるためと、is_page()ができることを極力できるようにするために少しコードが長くなっています。

次に、使用したいテンプレートファイル内で下記のように記載します。

 

コメント

内容の誤りなどがありましたら下記からご連絡をお願いします。頂いたコメントは基本的に公開されることはありません(必要な場合は個別に返信させて頂きます)。

CAPTCHA