Sidebar
ein-/ausblenden

Template-Part im WordPress Template laden

Plugin für WordPress SEO

Anzeige

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.

2 Kommentare zu „Template-Part im WordPress Template laden“

  1. 1
    Kommentar von Micha

    Ich habe bei der Entwicklung mienes Theme-Frameworks festgestellt, das get_template_part() nicht so flexibel ist wie locate_template(). get_template_part kann nicht in Unterordner schauen und damit kann man seine Parts wie Bylines, Posttemplates usw. nicht sinnvoll strukturieren bzw. die ganzen Schnipsel müssen in der Themeroot stehen, was nicht gerade zur Übersichtlichkeit beiträgt.

  2. 2
    Kommentar von Retsche

    Besten Dank für den Beitrag. Super interessant was mit WordPress 3.0 zur Verfügung gestellt wird.

Kommentare sind geschlossen.