webentwicklung-frage-antwort-db.com.de

Übergeordneter Seitentitel der obersten Ebene abrufen

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:

  • Beispiel Titel 1
    • Beispiel Titel 1-1
      • Beispiel Titel 1-1-1
      • Beispiel Titel 1-1-2
    • Beispiel Titel 1-2
  • Beispieltitel 2
  • Beispieltitel 3
  • Beispieltitel 4

Folgendes möchte ich zurückgeben:

  • Benutzer ist am Example Title 1 zurück Example Title 1
  • Benutzer ist am Example Title 1-1 zurück Example Title 1
  • Benutzer ist am Example Title 1-1-1 zurück Example Title 1
  • Benutzer ist am 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?

6
Brady

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.

13
Brady

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);
    }
}
4
Sisir