Duplikate im Loop von WordPress filtern

Die Loop in den Templates des Theme in WordPress ist das Herz einer jeden Ausgabe. Mit zunehmenden Anforderungen wird die Aufgabe an den Entwickler aufwendiger und das Default-Theme von WordPress hilft nicht weiter als Vorlage.
Nicht selten muss daher mit klassichen PHP-Möglichkeiten im Template die Umsetzung realisiert werden, denn es gibt dafür keine eigene Funktion oder Template Tag, wie einige Nutzer meinen. Da die Frage recht oft auftaucht und man in dem Fall eine Lösung aufzeigen kann, möchte ich mal darstellen, wie ich dafür sorge, dass Inhalte, die in einem Loop ausgegeben wurden, nicht in einem weiteren Loop nochmal dargestellt werden.

WordPress Suchformular

Die Integration der Suche in ein Theme für WordPress kann diverse Wege gehen, meist wird dazu ein Template gebaut, welches inkludiert wird. Dies ist nicht in jedem Fall notwendig und kann mit Hilfe eines WordPress Template Tag ebenso realisiert werden. Ob man sich dafür entscheidet und wie man darauf eingreifen kann, dies erklärt hoffentlich mein kleiner Beitrag.

Aktivierung von Themes nutzen

Möchte man das Aktivieren des Themes nutzen um diverse Einstellungen zu setzen, dann kann auch folgender Schnipsel sehr nützlich sein, der in der Diskussion der WP Hacker auf kam. Dies klappt wunderbar und sollte für Theme-Entwickler nützlich sein, die Optionen beim Aktivieren schreiben wollen.

WordPress Standard Widgets deaktivieren

Nicht immer möchte man alle Widgets, die der WordPress Core so mitbringt, im Theme aktiv haben. Das haben sich auch die Entwickler von WordPress gedacht und eine entsprechende Funktion mitgeliefert anstatt die Widgets in ein Plugin, gern auch als Core Plugin, ausgelagert.

Für Theme-Autoren bleibt nur der Weg, in die functions.php des Themes eine kleine Funktion abzulegen, die die Widgets, welche man nicht mag, deaktiviert. Der folgende Syntax schaltet alle Standard-Widgets ab. Er sollte daher angepasst werden, je nach Anforderung.

WordPress head erleichtern

WordPress bringt seit Version 2.5 stetig neue Standard Funktionen in den head des Themes ein, immer über den Hook wp_head. Auch mit WordPress 2.8 wurden neue Funktion ergänzt, die vorrangig den Link-Tag bedienen. Nicht immer ist das aber gewollt und daher können die Funktionen auch deaktiviert werden, schlicht und einfach mit Hilfe der Funktion remove_action.

WordPress Hooks definieren und nutzen

WordPress basiert auf dem sogenannten Hook-System. Dieses dient WordPress und allen Erweiterungen um Funktionen an bestimmter Stelle einzubringen. Hintergründe und Verständnis habe ich versucht in unzähligen Blogartikeln zu verbreiten und aktuell im t3n-Magazin. Die Hooks sind aber nicht nur zum einhaken, sondern können ebenso in eigene Erweiterungen genutzt werden und so mehr Übersicht schaffen und zusätzliche Schnittstellen für weitere Entwicklungen bieten. Gerade die zweite Möglichkeit ist interessant, wenn man ein Theme erstellt, welches diverse Schnittstellen bieten soll oder ein Plugin kreiert, was durch andere Autoren erweitert werden kann oder als Framework dienen soll.

WP Basis Theme

Fast seit dem ich mit WordPress beschäftige, irgendwann mit Version 0.71 war das, habe ich mir eine Theme-Layout geschaffen, was ich immer zum Neustart eines neuen Theme heran ziehe – WP Basis.
Fast genauso lange veröffentliche ich dieses Theme unter GPL und es wird wohl recht vielfach genutzt. Die Entwicklung am Theme habe ich weiter getrieben und das Theme ist mit jeder Version von WordPress gewachsen und passt sich den jeweiligen Änderungen an. Um diese Veränderungen besser Händeln zu können, habe ich das Theme seit geraumer Zeit im SVN von Google Code abgelegt und konnte dadurch auch auf die Mitarbeit von Andreas und Dominik zählen – vielen Dank an dieser Stelle nochmal!

Immer wieder kamen Fragen rein, ob das alte Theme aktualisiert wird und wann – daher hier nun die Info, ich habe einen Stand erreicht, der stabil ist und das Theme ist mit der aktuellen Version 2.7 und der kommenden Version 2.8 von WordPress kompatibel. Daher hier nun offiziell die Freigabe zum Download und Nutzen.

WordPress Seiten & Unterseiten abfragen

WordPress lässt es zu, dass man zu einer Seite (Page) im Backend entsprechende Unterseiten anlegt. Dies ist unter anderem ein Umstand, warum WordPress nicht selten als CMS in der Verwendung ist. Nun will aber mit Hilfe der Conditional Tags diverse Abfragen starten und darauf reagieren – dann sieht man nicht selten im Template statische Abfragen auf jede ID einer Seite.
Das geht natürlich anders und einfacher wenn es sich um Seiten oder Unterseite dieser Seite handelt.

Mit dieser Lösung kann man dann beispielsweise in Abhängigkeit einer Seite ein spezielles Layout laden und das Frontend so an diverse Anforderungen anpassen. Diese kleine Anforderung nehme ich mal als Beispiel und zeige eine Funktion, die mir die Abfragen zu Seite/Unterseiten gibt und zeige im Anschluss ein Beispiel im Einsatz.

Zähler für Kommentare, Track- und Pingbacks ab WordPress 2.7

Seit WordPress 2.7 gibt es eine API für den Bereich der Kommentare. Damit kann man auch den PHP-Anteil innerhalb der comments.php entschlacken, je nach eigenem Ermessen. Jean-Baptiste zeigt eine einfache Lösung, um die Kommentare zu zählen. Die Lösung sollte bekannt sein und wird quasi seit der ersten WordPress Veröffentlichung so realisiert. Wollte man dann aber einen Filter über den Zähler haben, der beispielsweise nur die Trackbacks zählt oder auch nur die Kommentare, die per Formular eingehen, dann scheitert diese Lösung. Außerdem ist das How To doch recht schmal und PHP-Laien könnten in Schwierigkeiten geraten.

Aus diesem Zusammenhang und diverser Fragen zum Thema zeige ich mal zwei einfache Funktionen, die in der functions.php des Themes abgelegt werden und dann willkürlich im Theme genutzt werden können. In der Regel werden sie dann also zur Ausgabe in der comments.php heran gezogen.