固定ページの親子関係を判定する関数を作成する

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 というスラッグがついているページに属する、すべての子・孫・ひ孫…ページ

となります。
これで、固定ページでも、カテゴリごとの切り分けが出来るようになりました!