WordPress のページでどれだけ深い階層からでも最上階の親ページのスラッグとタイトルを取得するコード

以下のコードでどれだけ深い階層にいても最上階のページスラッグとタイトルを取得することができます。
使い方としては、function.php とか直接テンプレートに以下のコードを入れて、好きな場所で parentData() と書けば、最上階のデータが配列で返ってきますです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function parentData() {
	global $post;
	$parent = $post;
	while(++$i && $i < 100) {
		if (!$parent->post_parent) {
			$parents['title'] = get_the_title($parent->post_parent);
			$parents['slug'] = $parent->post_name;
			return $parents;
			break;
		} else {
			$parent = get_post($parent->post_parent);
		}
	}
}

仕組みとしては、とにかく親の階層を上っていき、それ以上親が取得できなくなる時を最上階だと判断し、情報を配列で返します。6,7行目を見ていただけば分かると思いますが、デフォルトではページのスラッグとタイトルを返すだけですが、ここでカテゴリ情報やページ id など返させても良いかもですね。

ちなみに100回以上ループしないように制限かけています。何かあったら怖いですからね(笑)

コメント

  1. houseiさんのコメント

    ありがとうございますm(__)mこの投稿のおかげで解決しました!