訪問者が現在アクセスしているページの最上位の親ページのページタイトルを取得するにはどうすればよいですか。
説明させてください:
私はこのページ構造を持っています:
これが私が返したいものです。
Example Title 1
にいますreturn Example Title 1
Example Title 1-1
にいますreturn Example Title 1
Example Title 1-1-1
にいますreturn Example Title 1
Example Title 2
にいますreturn Example Title 2
通常、私がすることは$post->parent
をチェックすることです、そして、もし0
がページタイトルを返すならば、そうでなければ上記のページのタイトルを返します。問題は、$ post-> parentが1レベル戻るだけということです。私は$post->parent == 0
まで戻り続けるある種の再帰関数を使う必要があります。
これで自分で管理できるようになりましたが、その都度考えられる唯一の方法は、毎回get_post()を使用することです。それは最終的にトップレベルに到達するために8ページをロードすることを含みます。誰かがこれを行うためのより良い方法がありますか?
このようにして見つけました:
if ( 0 == $post->post_parent ) {
the_title();
} else {
$parents = get_post_ancestors( $post->ID );
echo apply_filters( "the_title", get_the_title( end ( $parents ) ) );
}
より良い方法を得た人は誰でも答えてください。
その効率的なこれがrecursive function
でできるかどうかわからない
function get_post_ancestor_title($post_id){
$post = get_post($post_id)->post_parent;
if ( 0 == $post->post_parent ) {
return get_the_title();
} else {
get_post_ancestor_title($post->ID);
}
}