Wie erhalte ich den Seitentitel der obersten übergeordneten Seite der Seite, auf der sich der Besucher gerade befindet?
Lassen Sie mich beschreiben:
Ich habe diese Seitenstruktur:
Folgendes möchte ich zurückgeben:
Example Title 1
zurück Example Title 1
Example Title 1-1
zurück Example Title 1
Example Title 1-1-1
zurück Example Title 1
Example Title 2
zurück Example Title 2
Normalerweise würde ich $post->parent
überprüfen und wenn 0
dann den Seitentitel zurückgeben, sonst den Titel der obigen Seite zurückgeben. Das Problem ist, dass $ post-> parent nur eine Ebene zurückgeht. Ich muss eine Art rekursive Funktion verwenden, die bis zum $post->parent == 0
zurückgeht.
Jetzt kann ich das selbst schaffen, aber die einzige Möglichkeit, die ich mir vorstellen könnte, wäre, jedes Mal get_post () zu verwenden, aber stell dir vor, ich bin 8 Ebenen tief (wir müssen tiefer gehen). Dazu müssten 8 Seiten geladen werden, um endlich die oberste Ebene zu erreichen. Hat jemand einen besseren Weg, dies zu tun?
So gefunden:
if ( 0 == $post->post_parent ) {
the_title();
} else {
$parents = get_post_ancestors( $post->ID );
echo apply_filters( "the_title", get_the_title( end ( $parents ) ) );
}
Jeder hat einen besseren Weg, bitte antworten Sie.
Ich bin mir nicht sicher, ob es effizient ist. Dies kann über recursive function
erfolgen.
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);
}
}