[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です。