Breadcrumps für WordPress sind Klassiker – Klassiker sind sie aber leider, weil es keine eigene WordPress Funktion gibt um diese zu generieren. Ich habe hier ein Script geschrieben, mit dem man für Seiten (Pages) ein Breadcrump Array erstellen kann. Dieses funktioniert nicht so wirklich mit Blogbeiträgen (Posts), weil diese im eigentlichen Sinne keine Eltern-Seiten haben, sondern Kategorie basiert sind.
Die wichtigste Funktion ist der Code im ersten Beispiel. Dies ist eine rekursive Funktion (d.h. eine Funktion, welche sich selbst aufruft). Man ruft sie auf, indem man eine Page-ID übergibt. Sie kontrolliert dann ob es eine Partent-Page-ID gibt, welche nicht ‚0‘ ist – Die ID 0 hat nämlich jede Seite ohne Eltern-Seite. Die Funktion gibt dann ein Array zurück, was jeweils die aktuelle und Eltern-Element ID enthält, den Seitentitel und den Permalink dorthin. Der Parameter $max_depth ist dabei nur eine Sicherheit, dass die Funktion nicht unendlich lange sich selbst aufruft, sondern maximal 5 mal.
Die gerade beschriebene Funktion ist der Grundstein für die Funktion, welche im Theme später eigentlich genutzt wird: p_breadcrump(). Mit dieser hat man die Möglichkeit die Ausgabe noch besser zu steuern. So kann eingestellt werden ob die Startseite und die aktuelle Seite Teil der Breadcrump sein sollen oder nicht. Damit bekommt man Strukturen hin wie:
- Startseite » Übersicht » Aktuelle Seite
- Startseite » Übersicht
- Übersicht » Aktuelle Seite
- Übersicht
Das Dritte Code-Beispiel ist nur dazu da, um zu zeigen, wie man aus dem Array noch eine HTML Ausgabe der Breadcrump im Theme selbst hin bekommt. Das ist eine einfache foreach() Schleife, welche das Array ausliest und sich den Seitentitel und Permalink nimmt um einen UL-Tag zu generieren.