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

  • facebook
  • このエントリーをはてなブックマークに追加
  • Twitter
  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階層)にだけ文字列を出力できるようになりました。

前の記事

WordPressプラグイン「Yoast SEO」で日付アーカイブページのタイトルを英語表示から日本語表示にする方法

次の記事

CSSでぼかし効果(ブラーエフェクト)をかける作例(レスポンシブ対応/画像の一部)