【WordPress】最上位(親)のIDで処理を設定する方法

WordPressカスタマイズの備忘録です。

WordPressの「固定ページ」では、親と子の関係を作ることができます。
この機能を使ってサイトを構成した際、親によってページのレイアウトだとかソースだとかを変えたい時があると思います。

直の親次第という場合は「$post->post_parent」を使って分岐させれば良いのですが、孫、曾孫まで掘り下げた構成になっている場合は、「$post->post_parent」が無くなるまでループさせることになります。

全ての先祖を取得する「get_post_ancestors」

そこで、ページの“祖先”全てを取得する関数『ancestors』を使うことで、長々とループを作らなくても指定の“始祖”の子孫であるかどうかを判断することができます。

get_post_ancestors( $post )

“$post”の部分は調べるページ・投稿のIDもしくは投稿情報(オブジェクト)を設定します。
一般的には「$post->ID」でOKだと思います。

<?php $ancestors = get_post_ancestors( $post->ID ); ?>

これで全ての祖先のIDを取得して「$ancestors」に格納してくれます。

あとは、その中に“始祖”のIDが含まれているかどうかで分岐するようにすれば完成です。

<?php
if( in_array( 123, get_post_ancestors( $post->ID ) ) ) {
処理命令を記述
}

上記では、始祖のIDを「123」とした場合の分岐としています。
『もし、先祖リストの中に「123」というIDが存在するならば、処理命令を実行しなさい』
ということになります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です