Für Menschen · Seien Sie begeistert und Sie werden begeistern !
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.
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' );
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.
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.phpwp-content/themes/wpbasischild/navi.phpwp-content/themes/wpbasis/navi-index.phpwp-content/themes/wpbasis/navi.phpAuch 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.
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.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 980 Beiträge, 18722 Kommentare in 14 Kategorien und 464 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet. Erstellt mit ♥ zum Befüllen und Erhalten.
Design und Code ist unter Copyright
© 2001 - 2012 bueltge.de [by:ltge.de]
6. Mai 2010 um 11:49
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.
12. Mai 2010 um 09:22
Besten Dank für den Beitrag. Super interessant was mit WordPress 3.0 zur Verfügung gestellt wird.