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が存在するならば、処理命令を実行しなさい』
ということになります。
コメントを残す