通常wordpressで階層といえばカテゴリを使用しますが 固定ページを使って階層分けしているサイトがあり そのサイトで特定の階層だけ表示したい(または表示しない)場合の方法 以下の記事にとても分かりやすく書いてくれています!
まずは、親子関係を判定する関数をfunction.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;
}
使いたいテンプレートで関数を呼び出します
親子関係を判定する関数をfunction.phpに記述したら 使いたいテンプレートで関数を呼び出します。
今回は、特定の固定ページの親子階層以外の固定ページに、 共通のものを表示したかったのでこんな感じで書きました。
<?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()):
それ以外の固定ページで表示
?>
<?php endif; ?>
おかげで階層をもたない固定ページも表示の切り替えができました。
詳しい解説は以下のページで。
【WordPress】固定ページの親子ページごとに表示を切り替える方法
ありがとうございます!