WordPressの固定ページで孫ページ(第3階層)の場合だけ出力する
固定ページが「親ページ」か「子ページか」か「孫ページ」か判断するif文を使用して孫ページ(第3階層)にだけ文字列を出力しようとしたのですが、うまくいきませんでした。
うまくいかない記述
<?php if(!$post->post_parent == 0){
$args = array(
'post_parent'=> $post->ID,
'post_type' => 'page'
);
if(!count(get_children($args)) > 0){
echo '孫ページです';
}
} ?>
出力結果
親
∟子:文字列出力(孫ページです)
∟子
∟孫:文字列出力(孫ページです)
問題点
この書き方の場合、孫を持つ子ページには文字が出力されないのですが、孫を持たない子ページ(第2階層)には文字列が出力されてしまいます。
うまくいく記述
<?php if(!$post->post_parent == 0){
$args = array(
'post_parent'=> $post->ID,
'post_type' => 'page'
);
if(!count(get_children($args)) > 0){
$parent_id = $post->post_parent;
$grandparent = get_post($parent_id);
$grandparent_id = $grandparent->post_parent;
if(!$grandparent_id == 0) {
echo '孫ページです';
}
}
} ?>
出力結果
親
∟子
∟子
∟孫:文字列出力(孫ページです)
解説
親の親のIDが0じゃない( = 親の親を持つ)場合という分岐を付けました。
これで孫ページ(第3階層)にだけ文字列を出力できるようになりました。
MovableType/WordPressを使ったホームページ制作、機能追加や設置代行などの改修、システム開発、サイトの保守を手掛けております。
アナタが実現させたい機能、やりたい事をお聞かせいただけませんか? そのイメージを一緒に実現しましょう!
お問い合わせは以下のページから!!