【wordpress】固定ページが特定の親ページを持つかどうか判断する
親ページや、親の親ページに特定のページが含まれているかどうか判断したかったので関数を作りました。特定のページ配下だけレイアウトを変えたり、出力を変えたりするのに便利です。
//$post : 投稿ID、または投稿オブジェクト
//$search : 判断したいページのslug名
//$flg : フラグ
function search_parent($post, $search, &$flg)
{
$parents_id = get_post_ancestors($post);//指定した投稿の先祖の投稿 ID を配列で取得
$flg = false;
foreach ($parents_id as $id) {
$parent_slug = get_post($id)->post_name; // 親スラッグ
if ($parent_slug === $search) {
$flg = true;
return $flg;
}
}
return $flg;
}
使い方
使いたい場所で関数を叩きます。
<?php
$flg;
global $post;
$post_ID = $post->ID;
if (search_parent($post_ID, 'demo', $flg)) :
//もし今見ているページが親や祖先に「demo」というスラッグ名のページがあったらtrue
echo 'demoページが親に含まれている';
else :
echo 'demoページは親に含まれていない';
endif;
?>