固定ページの親子関係を判定する関数を作成する
functions.php に、親子関係を判定する関数を記述します。
function page_is_ancestor_of($slug){ global $post; // 親か判別したい固定ページスラッグからページ情報を取得 $page = get_page_by_path($slug); $result = false; if(isset($page)){ foreach ($post->ancestors as $ancestor) { if($ancestor == $page->ID){ $result = true; } } } return $result; }
上記では、スラッグ指定をしています。
表示させたいテンプレートで関数を呼び出す方法
<?php if(is_page('about') || page_is_ancestor_of('about')): ?> about用のサイドバー <?php elseif(is_page('company') || page_is_ancestor_of('company')): ?> company用のサイドバー <?php elseif(is_page('voice') || page_is_ancestor_of('voice')): ?> voice用のサイドバー <?php endif; ?>
記述を解説いたしますと
is_page(‘about’)
→ about というスラッグがついているページ
page_is_ancestor_of(‘about’)
→ about というスラッグがついているページに属する、すべての子・孫・ひ孫…ページ
となります。
これで、固定ページでも、カテゴリごとの切り分けが出来るようになりました!