WordPress: Titel übergeordneter Seiten (parent) auslesen (direkter und oberster Vorfahre)
Bei der Erstellung eines WordPress-Themes kommt es häufiger vor, dass man nur den Namen einer übergeordneten Seite (parent page) anzeigen möchte. Zum Beispiel um für eine Metanavigation in der Sidebar eine Überschrift auszugeben.
Besonders interessant ist in diesem Zusammenhang der Titel einer Eltern-Seite auf oberster Verschachtelungsebene.
Bei einer Verschachtelungstiefe ab zwei, besteht ein Unterschied zwischen dem direkten Vorfahren einer Seite und dem Vorfahren auf oberster Ebene. Das folgende Beispiel zeigt eine Beispiel-Verschachtelung:
- Geografie
- Städte
- Berlin
- Köln
- Flüsse
- Spree
- Rhein
- Städte
Übergeordnete Seite auf oberster Ebene ausgeben
Nehmen wir nun an wir befinden uns auf der Seite „Berlin“. Mit dem folgenden Snippet geben wir den Vorfahren auf oberster Ebene aus. In unsererm Beispiel also „Geografie“.
Dieses Snippet gehört entweder global in die functions.php
oder ebenfalls in die Template-Datei.
<?php
function get_top_level_parent_title() {
global $post;
if ( empty($post->post_parent) )
{ the_title(); }
else {
$ancestors = get_post_ancestors($post->ID);
end($ancestors);
echo get_the_title(end($ancestors));
}
}
?>
Um den Titel im Theme auszugeben verwendet ihr folgendes Snippet:
<?php get_top_level_parent_title() ?>
Direkten Vorfahren ausgeben
Wenn wir nun auf Basis des gleichen Beispiels den direkten Vorfahren (Städte) auslesen wollten, muss das Snippet leicht modifiziert werden.
Code für die functions.php
.
<?php
function get_ancestor_title() {
global $post;
if ( empty($post->post_parent) )
{ the_title(); }
else {
$ancestors = get_post_ancestors($post->ID);
end($ancestors);
echo get_the_title($ancestors[0]);
}
}
?>
Um den Titel im Theme auszugeben verwendet ihr folgendes Snippet:
<?php get_ancestor_title() ?>
Vielen Dank für diesen Beitrag. Mein Problem ist jetzt das ich auf einigen Seiten keine Unterseiten habe und mein Titel dann doppel ausgegeben wird.
Gibt es für dieses Problem auch eine Lösung?
Du kannst das ganze ja auch mit einer IF Funktion abfragen, und wenn es keinen übergeordneten Titel gibt, wird nichts ausgegeben.
if( function_exists(“)
such mal im Template nach so einer Abfrage, oder in einer single.php , dann kannst du diese kopieren und an die Abfrage hier anpassen.
Vielen Dank!
Meine Version hat nicht richtig funktioniert und mit der Version ist mir ein Licht aufgegangen!
[…] die themenverwandten Seiten zur aktuell aufgerufenen Seite aufzulisten. In Kombination mit dem Snippet für den Titel der Eltern-Seite lässt sich hier sehr schnell eine individuelle Navigation erstellen. Mit Standard-Funktionen von […]