以下のコードでどれだけ深い階層にいても最上階のページスラッグとタイトルを取得することができます。
使い方としては、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回以上ループしないように制限かけています。何かあったら怖いですからね(笑)
houseiさんのコメント
ありがとうございますm(__)mこの投稿のおかげで解決しました!