Templating mit WordPress

Die Feinheiten

Zum Abschluss möchte ich noch auf das eine oder andere Detail eingehen das vielleicht noch ganz interessant ist. Da wäre zum Beispiel die Erklärung der foreach-Schleife in WP_Simple_HTML::get_list(), die ich bereits im letzten Artikel versprochen habe.
Das ist im Grunde genommen eine ganz einfache Sache um verschachtelte Templates zu realisieren. Zuerst bilden wir den inneren Teil unserer List mit einer foreach-Schleife. Dazu gehen wir einmal durch das komplette Array und übergeben die einzelnen Werte an die Variable $args->item. item deshalb, weil der Platzhalter im Template item heißt. Das Resultat hängen wir an einen String den wir nach der foreach-Schleife dem äußeren Template-Teil übergeben ($args-outer).
Da wir auch die Schlüssel des Arrays abfragen, könnten wir somit auch diese in der Liste verarbeiten sofern wir einen Platzhalter key einsetzen würden. Bei einem nummerischen Array wäre in der Variablen key dann die Nummer des Elements. Bei assoziativen Arrays, der Wert des Schlüssels.

Bei den List-Templates habe ich verschiedene List-Typen zu einem Template zusammen gefasst. Es gibt aber auch Templates die keine verschiedenen Typen unterstützen (z.B. paragraph). Da aber erwartet wird das die Templates als Array vorliegen, wird dies in WP_Simple_Templater::get_templates() dadurch abgefangen, das der String in ein Array konvertiert wird (Zeile 44 & 68).

Die Klasse WP_Simple_HTML überschreibt die Begrenzer für die Platzhalter in einen eigenen Konstruktor. Würde man dies nicht tun, würden die Begrenzer aus WP_Simple_Templater (%) übernommen werden. Ist man mit den Begrenzern aus WP_Simple_Tamplater zufrieden und kann sie nutzen, kommt WP_Simple_HTML auch ohne Konstruktor aus.
Wird ein Konstruktor verwendet, muss zuerst der Konstruktor der Eltern-Klasse aufgerufen werden damit die dortigen Initialisierungen vorgenommen werden können. Danach erst können die Begrenzer überschrieben werden. Alternativ kann man auch in den einzelnen Methoden die Begrenzer explizit setzen bevor die Daten in das Template eingesetzt werden. So kann man flexibel auf verschiedene Templates reagieren.

Letzte Worte

Das waren jetzt recht viele und tief gehende Informationen. Dennoch hoffe ich das der eine oder andere ein paar nützliche Informationen mitnehmen konnte. Anregungen und Kritik nehme ich gern ein den Kommentaren entgegen.