senäh

17senäh und so…

Wordpress Logo

WordPress
29. Jul 2011
Kommentare: 2

WordPress-Shortcodes wie Template-Tags benutzen

Kategorien: WordPress | 29. Jul 2011 | Kommentare: 2

Was ist ein Shortcode?

Ein Shortcode ist ein kleiner Textschnipsel, den man im WordPress-Backend beim Erstellen eines Artikels oder einer Seite eingibt. Wird der/die entsprechende Artikel/Seite für den Benutzer gerendert, erkennt WordPress den Shortcode und ersetzt ihn. Womit? Das hängt von der Verwendung des Plugins ab.

Ein Beispiel

Bei meinem letzten Studienprojekt musste ich eine User-Verwaltung bauen, da Benutzer sich registrieren und einloggen können sollten. WordPress bringt das zwar von Haus aus mit, jedoch nur über die Oberfläche des eigenen Backends.

Der WordPress-Login-Screen

Der WordPress-Login-Screen

Das ist uncool. Die Registrierungs- und Login-Formulare sollen doch bitte dem Seitendesign angepasst werden können.

Wie so oft bei WordPress-Problemen gilt: there’s a plugin for that. Name: Theme My Login. Einmal installiert muss man nur noch an der Stelle, wo das entsprechende Formular erscheinen soll (z.B. am Ende eines Artikels), einen Shortcode eingeben. Man könnte also eine Seite mit dem Namen „Login-Seite“ anlegen und dort nichts außer dem Shortcode [theme-my-login] eingeben. Im Frontend würde dann für den Benutzer eine Seite mit einem (per CSS) an das eigene Design angepasste Login-Formular erscheinen.

Das ist cool so. Aber vielleicht möchte man dem Login-Bereich keine ganze Seite widmen. Viel eher will man abhängig von bestimmten Gegebenheiten bei einem bestimmten Template den Login-Bereich einblenden.

Beispiel? Angenommen, man möchte unter jedem Blogpost ein Login-Formular vor den Kommentaren einfügen… warum auch immer. Dann macht ein Shortcode keinen Sinn mehr. Man benötigt ein Template-Tag.

Was ist ein Template-Tag?

WordPress-Templates bestehen aus einem Gemisch von PHP- und HTML-Code. Dabei ruft man an bestimmten Stellen des Templates PHP-Funktionen auf, um den Inhalt eines Blogposts anzuzeigen, die Kommentare zu rendern, usw. Dafür benötigt man aber wie gesagt eine Funktion… und keinen Shortcode.

Unterschied zwischen Shortcode und Template-Tag ist also? Richtig! Ein Shortcode wird im Backend als Inhalt eingegeben, während ein Template-Tag als Funktion im eigentlichen Template aufgerufen wird. Ersteres ist einfacher, letzteres ist flexibler.

Und wenn ein Plugin nur einen Shortcode bietet, ich aber ein Template-Tag bräuchte?

Dafür bringt WordPress die Funktion do_shortcode($content); mit. Als Parameter muss lediglich der Shortcode übergeben werden, der halt gerendert werden soll. In unserem Fall sieht die Lösung also wie folgt aus: do_shortcode("theme-my-login");
Ergebnis könnte dann so aussehen:

Angepasster Login-Screen

Angepasster Login-Screen

Musste ich nur mal posten, weil ich erst nach Beendigung des oben erwähnten Projekts drauf gestoßen bin. Vielleicht hilft es jemandem.

Autor: Enno

Ich bin Enno. PHP ist mein Ding, aber auch alles Neue rund um die Themen HTML5, CSS3 & Co finde ich interessant. Ich mag es Leuten zu helfen und mein Wissen weiterzugeben. Sollte dir mein Beitrag gefallen haben, lass doch nen Kommentar da oder benutze einen der Social Buttons, um deinen Dank auszudrücken ;)