WordPressの固定ページで孫ページ(第3階層)の場合だけ出力する

  1. うまくいかない記述
  2. うまくいく記述

固定ページが「親ページ」か「子ページか」か「孫ページ」か判断する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階層)にだけ文字列を出力できるようになりました。

書いた人:やまライダー(嫁)

Web屋さんで8時間フルタイム勤務をしている、いわゆるワーキングマザー。
夫婦共働きで、ムスメ氏を育てています。
主に資産運用にかかわるお金の話、ムスメ氏を育てていく上での子育ての話、そしてたまにお仕事関連の記事を書いていく予定。
プロフィールを見る