Die Templatehierarchie von WordPress ist eine feine Sache, wenn man sich einmal hinein gedacht hat. Je nach Situation (Archivseite, Einzelseite, Artikel eines Custom-Post-Types) und damit nach Zustand der Main-Query – der globalen Instanz von WP_Query
sucht WordPress im Theme-Verzeichnis nach dem passenden Template. Die Suche geht dabei vom sehr speziellen Template schrittweise zu allgemeineren Templates und schließlich zur index.php
. Jenes Template, was zuerst gefunden wird, wird als erste php-Datei zur Darstellung der Seite verwendet.
Mit diesen generischen Templates lassen sich sehr komplexe Inhaltsstrukturen abbilden, ohne dass der Redakteur sich um die Zuweisung kümmern müsste.
Aus den Namen dieser Templates lässt sich recht einfach die Situation ableiten, in denen sie zum Einsatz kommen: category-katzenbilder.php
spricht z.B. für sich. In vielerlei Hinsicht. Andersherum ist das nicht immer ganz so einfach: Will man wissen, welches Template für die gerade angeschaute »Seite« verantwortlich ist, geht die große Suche los.
Mir ist das einmal zu oft auf den Geist gegangen. Daher habe ich mir ein kleines Plugin geschrieben, welches den Templatenamen einfach in die Admin-Bar schreibt. Seitdem nutze ich das Plugin auf jedem Entwicklungssystem mit dem ich an einem Theme arbeite.
Nachtrag:
Das Plugin benötigt zwingend PHP in Version 5.3.0 oder höher. Wenn das nicht zur Verfügung steht, nutzt Debug Objects oder What the file
Sorry, I forgot to tell: It says “unexpected T_STRING”
Hast Du vielleicht eine PHP Version kleiner 5.3 im Einsatz?
Sehr praktisch! Alternativ gibt es http://wordpress.org/plugins/what-the-file/
Danke für die Info, »What the file« kannte ich bisher nicht. Der geschätzte Umfang der Implementierung rechtfertigte aber die direkte Umsetzung einer Suche nach existierenden Lösungen vorzuziehen. 😉 »Debug Objects« kann das ja offensichtlich auch, wie Frank angemerkt hat.
»What the file« macht mir persönlich aber schon wieder viel zu viel, z.B. Optionen zu schreiben.
och Mensch, wer hat genau das nicht schon mal gesucht. Danke dafür!
Nur ist es wg. php 5.3 eben nicht bei allen Kunden einsetzbar 🙁
Moin Thomas,
wie gesagt, ich setze es lokal zum Entwickeln und Debuggen ein. Auf Kundenservern kaum. Aber wer leidet da noch unter PHP 5.2? Scheinbar mehr als ich dachte. Vielleicht schreib ich einen PHP 5.2 branch, sollte ja schnell gehen.
Leider ist meiner Meinung nach WordPress Debugging (noch) nicht optimal gelöst.
Um das aktuelle verwendete Templatefile auszulesen, gibt es neben den bereits erwähnten Plugins auch noch diverse weitere Plugins, z. B.
– “Which Template”
– “Display Template Name”
– “What Template”
etc. oder ein Plugin des Plugins Debug Bar und – wie erwähnt – Franks Debug Objects
Ähnlich umfangreiche Debug Informationen (und nicht nur aber auch das aktuell benutzte Template) liefert John Blackburns Query Monitor. Dieses Plugin gefällt mir persönlich sehr gut.