Template-Part im WordPress Template laden

Die Zeiten ändern sich.

Dieser Beitrag scheint älter als 13 Jahre zu sein – eine lange Zeit im Internet. Der Inhalt ist vielleicht veraltet.

Wer sein Theme für WordPress recht flexibel gestalten wollte und die Modularisierung liebt, der musste bisher immer über den Pfad gehend das Template einbinden. Mit WordPress 3.0 wird dies anders möglich sein und es steht eine Funktion bereit, die das laden von Templates einfach macht.

Am Beispiel verstehen

Stellen wir uns vor, es soll eine Navigation mehrfach verwendet werden – aber an unterschiedlichen Positionen und an unterschiedlicher Stelle des Markup. Hier würde es also nicht ausreichen, wenn man via CSS das Aussehen beeinflusst. In den meisten Fällen würde man wohl die Navigation in ein eigenes Template auslagern, zum Beispiel die nav.php. In dieser Datei befindet sich das HTML-Markup und die nötigen Template Tags um eine Navigation zu erstellen. Diese Datei würde man dann inkludieren. Bis WordPress 3.0 wurde das üblicherweise wie folgt getan: include( TEMPLATEPATH . '/navi.php' );

Funktion get_template_part()

Mit WordPress 3.0 soll in diese Form der Modularisierung mehr Bewegung kommen und so kann man mit Hilfe der Funktion get_template_part() Templates ansprechen. Die Funktion erlaubt die Übergabe von zwei Parametern:


/**
 * @uses locate_template()
 * @since 3.0.0
 * @uses do_action() Calls 'get_template_part{$slug}' action.
 *
 * @param string $slug The slug name for the generic template.
 * @param string $name The name of the specialised template.
 */
get_template_part( $slug, $name = null )

und besitzt einen Hook get_template_part_$slug, den man ansprechen kann.

Kommen wir nun zurück auf das obige Beispiel der Navigation, die nun mit Hilfe der neuen Funktion wie folgt inkludiert wird: get_template_part( 'navi' );. In diesem Fall wurde lediglich der Parameter slug übergeben – navi – der nun dafür sorgt, dass die navi.php geladen wird.
Im nächsten Schritt soll die Navi, welche explizit für die Sidebar erstellt wurde, genutzt werden. Der Source ist in der navi-sidebar.php gehalten und damit sieht der Aufruf wie folgt aus: get_template_part( 'navi', 'sidebar' );. Der Aufbau der Template-Datei muss also aus slug-name.php entstehen.

So lassen sich quasi beliebige Muster erstellen, die vor allem dann an Wert gewinnen, wenn es um Wiederverwendung geht oder wenn man mit Hilfe von Child-Themes arbeitet, da man so auf das Vater-Theme zugreifen kann und doch recht flexibel die eigenen Templates erstellen kann.

Reihenfolge beim Laden

WordPress nutzt beim Laden der Templates eine Hierarchie, so dass man auf verschiedene Templates zugreifen kann, ein Beispiel soll es verdeutlichen. Das Vater-Theme befindet sich in wp-content/themes/ und benutzt den Ordner wpbasis, das Child-Theme ist im Ordner wpbasischild zu finden. Nun gibt es in einem der Templates den Aufruf <?php get_template_part( 'navi', 'index' ); ?>. Nun wird nach der navi-index.php gesucht mit folgendem Muster:

  1. wp-content/themes/wpbasischild/navi-index.php
  2. wp-content/themes/wpbasischild/navi.php
  3. wp-content/themes/wpbasis/navi-index.php
  4. wp-content/themes/wpbasis/navi.php

Auch hier also einige Neuerungen unter der Haube, die für Theme-Autoren recht nützlich sein können. Da in letzter Zeit die Nutzung von Child-Themes gewachsen ist, sicher eine nützliche Funktion.

Von Frank Bültge

bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.