ミギムキ

[WordPress] 指定したスラッグのページが親かどうか判定したい

ある特定の親ページをもつときだけ要素を表示・非表示させたいケースがあります。

例えば、コーポレートサイト内に採用ページを作成して、ヘッダーのロゴやメニューを採用ページ用に切り替えるといった場合は、採用ページとその小階層のページかどうかを簡単に判別する手段が欲しくなります。

本記事では、特定のページが現在表示しているページの親であるかどうかを判定するための方法を紹介します。

サンプルコード

functions.php

// 指定したスラッグのページが親かどうか判定 function is_parent($slug) { global $post; $result = false; if(!empty($post->post_parent)) { $post_data = get_post($post->post_parent); if($slug == $post_data->post_name) { $result = true; } } return $result; }

グローバル変数「$post」に、現在表示しているページの様々な情報が格納されています。

「post_parent」には親ページがある場合に親ページのidが格納されます。親が存在しているのであれば、id(post_parent)を元に親ページの情報を取得し、スラッグ名の比較を行います。

引数のスラッグと親ページのスラッグが一致しているのであれば、関数の戻り値としてtrueを返却します。

使用例

<?php if(is_page('recruit') || is_parent('recruit')) { ?> <?php } else { ?> <?php } ?>

サンプルコードの使用例です。「recruit」というスラッグのページか、それを親に持つページの場合if文の中に記載した要素を表示します。

ご質問など受け付けています

記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。

ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。