Wordpress: Aufzählung der Kategorien und Tags im Satz
Die Template-Tags the_category() und the_tags() geben die Kateorien und Stichworte eines Artikels wahlweise als eine ungeordnete Liste, oder durch einen Seperator getrennt aus. Für eine lose Aufzählung wäre ein naheliegendes Trennzeichen das Komma; der Funktionsaufruf dazu schaut so aus: the_tags(', '). Das Ergebnis wäre eine Aufzählung aller Stichworte, die durch ein Komma getrennt sind.
Für diesen Beitrag würde das so aussehen: PHP, Wordpress. Kurz und knackig, aber ein ordentlicher Satz lässt sich daraus nicht formulieren, dazu fehlt das „und“ zwischen den beiden (letzten) Stichworten.
Um solche Aufzählungen in einen vernünftigen Satz einbinden zu können habe ich mir folgenden Code-Schnipsel in die functions.php des Themes geschrieben:
/* * Ersetzt das letzte Komma durch ein ' und ' */ function mytheme_tag_list($a) { //wenn mehr als ein link vorhanden ist if(substr_count($a,'<a href="') > 1) { $pattern = '#</a>\s*,\s*<a ([^>]*)>([^<]*)</a>\s?$#'; $replace = '</a> und <a $1>$2</a>'; $a = preg_replace($pattern,$replace,$a); } return $a; } add_filter('the_category','mytheme_tag_list'); add_filter('the_tags','mytheme_tag_list');
In dieser Form greift der reguläre Ausdruck nur Auflistungen heraus, die durch ein Komma (und evtl. Whitespace) getrennt sind. Aufzählungen ohne oder mit anderen Trennzeichen bleiben unberührt.
Nun kann ich formulieren, dass dieser Beitrag die Themen PHP und Wordpress behandelt.
01) 02.03.2010
Francesco
Gerade heute hab ich mir den Kopf zerbrochen, wie ich das bewerkstelligen könnte. Diese einfache Lösung passt wie die Faust auf’s Auge – vielen Dank!
02) 04.03.2010
Thomas Scholz
Ich gehe einen etwas anderen Weg, der auch Plural und Singular berücksichtigt:
03) 04.03.2010
David
Das geht natürlich auch. Ich hab die Plural behandlung bewusst außen vor gelassen um mehr flexibilität im Satzbau zu lassen.
P.S. Ich habe mir erlaubt, die Attribute ‘line’ und ‘escape’ aus dem <pre> zu nehmen, sonst erkennt mein Plugin das nicht als Code.