WordPress: Titel übergeordneter Seiten auslesen (direkter und oberster Vorfahre)

wordpress-page-title

Bei der Erstellung eines WordPress-Themes kommt es häufiger vor, dass man nur den Titel einer übergeordneten Seite 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.

Trainings für Unternehmen und Privatpersonen

Wir machen dich fit für die Zukunft des Web! In unseren Seminaren und Workshops lernst du wie moderne Websites entstehen.

Infos zu Inhouse-Seminaren
Infos zu öffentlichen Terminen

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

Ü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() ?>

via