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:
wp-content/themes/wpbasischild/navi-index.php
wp-content/themes/wpbasischild/navi.php
wp-content/themes/wpbasis/navi-index.php
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.