Das Geheimnis der WP Template Hierarchie – Template Cheat Sheet zum Ausdrucken
Welches Template nutzt WP, wenn man sich eine Kategorie ansieht, welches bei einer Galerie. Die WP Template Hierachie in einem Bild dargestellt und die Conditional Tags gleich mit dazu.
- WordPress Cheat Sheet
Welches Template nutzt WordPress wann – auf diese Frage gibt mein Template Cheat Sheet die Antwort. Dieser Template Cheat Sheet hilft Theme Autoren genauso wie jedem, der einfach spezielle Sachen in seinen Templates realisieren mag.
Im Download ist das große Bild 3072 X 2304 und eine .pdf Datei enthalten.
»Download Template Hierarchie «
neuen Counter installiert.
Die nützlichen Conditional Tags habe ich auch gleich dazugetippt. Conditonal Tags sind Bedingungsabfragen.
Einige außergewöhmliche Conditional Tags findet man dann hier im Artikel. Außerdem gebe ich -soweit gefunden- auch gleich Linktipps.
WP Template Hierarchie
WP erkennt bis auf “yourname.php” all diese angeführten Templates, wenn sie im jeweiligen Theme Ordner vorhanden sind und wenn sie genau die angeführten Namen haben.
home.php
Wer als Startseite nicht die klassische Blogansicht haben mag, sondern eventuell statischen Text, kann eine home.php erstellen.
Gibt es diese nicht im Theme Ordner nimmt WP automatisch die index.php.
Conditonal Tags fragen nach einer Bedingung.
z.B.: Wenn Startseite dann gib die class current_page_item zurück:
<?php if (is_home()) echo " class=\"current_page_item\""; ?>
Oder seit WP 2.5
<?php if (is_front_page()) echo " class=\"current_page_item\""; ?>
Nutzt man eine statische Seite als Startseite ist man mit is_front_page besser dran.
Linktipps:
single.php
Die single.php zeigt einen Artikel in der Einzelansicht an. Ist sie nicht vorhanden nimmt WP dafür die index.php.
Conditonal Tags für die Abfrage, ob es die Einzelansicht ist:
- is_single() einfach bei jeder Singleansicht.
- is_single(’3′) nur beim Artikel mit der ID 3.
- is_single(’Oh Nein’) nur für den Artikel mit dem Titel Oh Nein.
- is_single(’ichbingut’) nur beim Artikel mit dem Postslug:ichbingut.
- is_single(array(3,’ichbingut’,'Oh Nein’)) wenn es entweder die Single mit der ID 3 oder dem Titel Oh Nein oder dem Postslug ichbingut gibt.
Linktipp:
attachment.php
Die single.php kann aber auch ganz automatisch die image.php für die Anzeige von Bildern nutzen. Gibt es die image.php nicht, nimmt WP die attachment.php, gibt es diese auch nicht, nimmt WP die single.php. Außerdem gibt es die video.php, audio.php und application.php- jedes Mal gilt ist eine von diesen nicht da, kommt die attachment.php danach die single.php.
AB WP 2.9 kann man für jeden MIMY Type ein eigenes Template erstellen. text.php, video.php etc etc…
Conditional Tag
- is_attachment ()
comments.php comments-popup.php
Mag man Kommentare nutzen braucht man entweder die comments.php oder die comments-popup.php.
Die comments-popup.php zeigt Kommentare als Popup an, doch dazu braucht es auch einen Eintrag in die header.php -also in den html header und zwar zwischen head und /head.
<?php comments_popup_script(); ?>
In der single.php oder index.php muss man dann diese Popups so aufrufen.
Dieser Code ist gleich für ein lokalisiertes Theme. “mtsretro50″ mit dem eigenen Namen ersetzen.
<?php comments_popup_link(__('No Comments','mtsretro50'), __('1 Comment','mtsretro50'), __('% Comments','mtsretro50'), '', __('Comments off','mtsretro50')); ?>
yourname.php page.php
ab WP 2.9:
yourname.php, page-slug.php page-ID.php page.php
WP kennt statische Seiten, diese sind aus der Chronologie der anderen Artikel ausgenommen. Außerdem wird bei statischen Seiten kein Update Service benachrichtigt.Also kein Ping an Technorati etc gesendet. (dafür gibt es allerdings ein Plugin!)
Dafür nimmt WP die page.php oder eben die index.php.
yourname.php
Mag man selber eine statische Seite gestalten, dann muss man dieser einen Namen geben und im Admincenter==>Schreiben==>Seite nach unten scrollen und dort das Template dann auswählen.
Sinnvoll ist es das template so zu benennen wie die statische Seite dann heißt, dies hilft einfach dem Überblick, daher auch yourname.php.
Folgendes muss man ganz oben in der yourname.php hineintippen.
<?php /* Template Name:Dein Name */ ?>
ab WP 2.9: page-slug.php und page-ID.php
diese braucht man nur in den Theme Ordner zu legen und WP 2.9 erkennt sie automatisch.
Conditional Tags:
- is_page() jede statische Seite
- is_page(’4′) nur die mit der ID 4
- is_page(’email’) nur die mit dem Postslug Email.
is_page_template
Seit WP 2.5. gibt es den neuen Conditional Tag is_page_template, dazu muss man den Dateinamen des Templates einfügen:
Wenn ein bestimmtes page template im Einsatz ist, dann mache…
is_page_template('about.php')
Unterseiten
Für Unterseiten gibt es keinen Conditional Tag, aber man kann sich so abhelfen:
<?php // Get $post if you're inside a function global $post; if (is_page() && $post->post_parent ) { // This is a subpage } else { // This is not a subpage } ?>
zB um unterschiedliche Header Bilder anzuzeigen, aber diese auch für die Unterseiten nutzen.
<?php if (is_page(about) || $post->post_parent=="2") { $bannerimg="home.jpg"; } elseif (is_page(urlaub) || $post->post_parent=="56") { $bannerimg="tmeer.jpg"; } elseif (is_page(reise) || $post->post_parent=="15") { $bannerimg="flugzeug.jpg"; } else { $bannerimg="home.jpg" ; // Fall-through } ?>
Linktipps:
- Statische Seite zeigt Artikel aus einer bestimmten Kategorie an
- Und weil dies sooft gefragt wird: Weiterblättern.
- mehrere statische Seiten auf einer statischen Seite anzeigen lassen
- eigene Sitemap erstellen
is_singular()
Der conditaional Tag is_singular fragt alle Einzelansichten ab: vom Bild, Video, (pseudo)statische Seite, Einzelansicht des Artikels, die Kommentare etc.
category-ID.php category.php
ab WP 2.9 :category-slug.php kommt dazu.
Dies wird eine große Erleichterung, denn man hat mehr Überblick im Theme Ordner
Die Kategorieansicht zeigt WP mit der category.php, gibt es diese nicht nimmt es die archive.php, ist die auch nicht da, dann eben die index.php.
Mag man nur die category mit der ID 7 anders aussehen lassen als andere categorien, kann man dies mit dem template category-7.php realisieren.
Conditional Tags:
- is_category() jede Kategorie /Rubrik
- is_category(’7′) nur die mit der ID 4
- is_category(’tipps-und-tricks’) nur die mit dem Postslug tipps-und-tricks.
- is_category(’Lesen’) nur die mit dem Titel Lesen.
- is_category(array(7,’tipps-und-tricks’,'Lesen’)) entweder bei der Kategorie mit der ID 7 oder dem Postslug tipps-und-tricks oder dem Titel Lesen.
Is_category wird gerne mit in_category verwechselt. Das erste fragt: ist es die Kategorie das 2. fragt ob etwas IN einer Kategorie ist und funktioniert nur innerhalb des Loops.
Linktipps:
author.php
Mag man seinen Autoren eine eigene Seite gönnen, dann nutzt man die author.php ist die nicht vorhanden nimmt WP die archive.php,fehlt auch die dann die index.php.
Conditional Tags:
- is_author() jeder Autor
- is_author(’9′) nur der Autor mit der ID 9
- is_author(’eva’) nur die Autorin Eva
- is_author(’pet’) nur der Autor Pet
- is_author(array(9,’pet’,'eve’)) entweder wenn es der Autor mit der ID 9 ist oder Pet oder Eve
date.php
Vielleicht mag wer auch nur ein Jahresarchiv anders gestalten oder einen speziellen Monat, dafür gibt es die date.php. Ist die nicht vorhanden nimmt WP die archive.php oder dann die index.php.
Conditional Tags:
- is_date() für alle Datumsbezogenen Archive wie Monat, Jahr, Tag etc.
- is_year() Nur für das Jahreaarchiv-
- is_month() Wenn ein Monatsarchiv gezeigt wird.
- is_day() Wenn es ein Tagesarchiv sein soll.
- is_time() Wenn es die Stunde, Minute, Sekunde ist.
tag-slug.php tag.php
ab WP 2.9 erkennt WP auch tag-ID.php.
Tags – die Schlagwörter oder Stichworte haben auch ihr eigenes template, wenn man mag. Ja sogar jedes Schlagwort kann sein eigenes template haben.
zB.: Tag heißt “Hoffnung”, dann erstellt man die tag-hoffnung.php. Ist keine tag-slug.php da sucht WP die tag.php, ist die nicht da nimmt WP die archive.php, fehlt auch die einfach die index.php.
Conditional Tags:
- is_tag() wenn einfach ein Schlagwort angezeigt wird.
- is_tag(’hoffnung’) Nur dann , wenn das Schlagwort Hoffnung auftaucht.
- is_tag(array(’hoffnung’,'mild’,'wetter’)) Wenn entweder das Schlagwort Hoffnung oder mild oder Wetter vorhanden ist.
search.php
Es gibt einen eigenen Template Tag für die Suche:
get_search_form()
Mag man jedoch das Suchformular selbst gestalten kann man dies nach wie vor in der searchform.php.
In der search.php werden die Suchergebnisse angezeigt, ist diese nicht vorhanden nimmt WP dafür die index.php.
Conditional Tag:
- is_search()
Rein theoretisch kann man auch hier is_search(’search-term’) angeben, nur wer weiß so ganz genau wonach die User suchen
.
search-term ist das Suchwort.
404.php
Dies ist die Fehlerseite, die auftaucht, wenn es eine URL, ein Bild, einen Anhang etc. nicht mehr gibt. Auch als Error 404 bekannt. Es ist ratsam seine eigene 404.php zu erstellen, so verärgert man User nicht, wenn etwas nicht mehr gefunden wird.
Ist die nicht vorhanden nimmt WP die index.php dafür.
Conditional Tag:
- is_404()
Linktipp:
functions.php
Die functions.php erkennt WP, darin kann man nicht nur Angaben zu Widgets machen, sondern auch eventuell zu einer OptionsPage für das WP Theme oder anderen nötigen Code unterbringen.
Andere Conditional Tags
is_paged
is_paged fragt ab, ob etwas “geblättert” wird. Also ob es Seite 1 oder Seite 3 gibt. is_paged hilft nicht, wenn man einen Artikel oder eine statische Seite mit >– nextpage–< umgebrochen hat. Dafür gibt es keine Abfrage, dies mußte ich schmerzlichst selber erfahren
is_attachment()
Dies fragt ab, ob ein Bild oder ein anderes Dokument angehängt wurde.
is_feed()
Fragt ab, ob ein Feed vorhanden ist. Dies nutzen nur Plugin Autoren, der Enduser braucht dies kaum, genauso wie
is_trackback()
Fragt ab, ob ein Trackback vorhanden ist.
Fazit
Ohne index.php geht nichts
. Das minimalistischste WP Theme hat eine index.php und eine style.css, eventuell noch den Ordner “images” für Bilder des Layouts.
Kommentare als Popups findet man kaum noch wo. Am ehesten bei Fotoblogs.
weiterführende Links
Download des Template Sheets über die WP Template Hierarchie
Download Template Hierarchie .
Herunterladen, entpacken, ausdrucken. Auf A4 gut lesbar, ich habe es ausprobiert
Ich drucke mir solche Sheets immer auf Kartonpapier aus und laminier dieses dann. Manch einer mag es vielleicht in einer Folie griffbereit haben.
war dies hilfreich für Dich, dann…
freu ich mich übers Weitersagen, eine Social Bookmark oder einfach einen Link.
Artikelhistorie:
Erstveröffentlichung: 08.06.2008
Update am 22.09. 2009 – neue Templates gibt es und einige neue Conditonal Comments.
Update am 29.11.2009 – die neuen Templates für WP 2.9 hinzugefügt, Darstellung entschlackt und Download als .pdf hinzugefügt,
neuen Counter installiert bis dato 4421 downloads im Jahr 2009. Im Jahr 2008 habe ich nicht gezählt.




Hallo,
darf ich eine Frage zu Abfragen stellen, deren Lösung ich mir schon den zweiten Abend nicht ergooglet bekomme?
Ich möchte auf der index.php Inhalte einfügen in Abhängigkeit von der Kategorie, in der sich Posts befinden. Die Abfrage etwa: Wenn ich mich in der Kategorie #6 befinde (is_category(’6′)) oder in einem Post (is_single()), der zur Kategorie #6 gehört, dann echo blabla. Wie schaffe ich die Verbindung “Post aus einer Kategorie”?
Danke für jede Hilfe
Ralf
Ralf30.09.08 23:27 | # |
Hi Ralf Du magst – so ich verstand – nicht abfragen
is category , weil dies bedeutet ja *wenn es die Kategorie ist*, sondern Du magst,
wenn
also wenn der Artikel IN der Kategorie 6 ist
oder?
lg
texto01.10.08 13:05 | # |
Ja, Texto, stimmt genau. Ich las jedoch, dass in_category nur in Loops funktioniert und nicht in einer Abfrage. Und es klappte bei meinem Test auch nicht. Wie sähe denn die Abfrage dann aus?
lg
Ralf
Ralf01.10.08 13:52 | # |
Hallo,
der Artikel ist ja schon eine Weile her, ich möchte dennoch anknüpfen.
Wie kann ich es denn erreichen, dass in der single.php nur etwas angezeigt wird, wenn es beispielsweise vom Admin geschrieben wurde?
Folgendes funktioniert leider nicht:
if (is_author(’1′))
{
echo “Hallo, ich bin der Admin”;
}
Gruß Ludwig
Ludwig16.03.09 08:54 | # |
Hi Ludwig
hier steht zwar ein Beispiel mit *wenn nicht Autor XYZ*
aber statt dem != kannst Du ja ein == einsetzen
wenn Autor dann mache dies …
lg
texto16.03.09 10:40 | # |
Das war die Lösung, ich danke dir!
So funktioniert es:
if (get_the_author() == ‘admin’)
{
print “Hallo, ich bin der Admin”;
}
Ludwig16.03.09 10:57 | # |
Hallo,
ohne einen Kommentar kann ich nicht gehen, dieser Artikel ist einfach gut. Nachdem ich mir Dein Bild heruntergeladen habe, werde ich es mir ausdrucken und an die Wand hängen.
Danke schon mal hierfür.
Gruß aus dem Norden von
Thomas
thomas5722.05.09 18:27 | # |
das mag ich sehen,
Fotobeweise!
“lachend”
lg
texto22.05.09 18:57 | # |
Danke für die Infos. Den Link habe ich mir gespeichert. Sollte ich WordPress installieren wird es mir später helfen.
bambus-gegen-mobbing.de
Clarissa24.05.09 11:08 | # |
Tausend dank! Das Sheet ist echt gold wert!
Kai H.23.09.09 06:11 | # |
Hallo Monika,
wieder ein ausgesprochener guter Artikel von dir ! Schau immer wieder gern vorbei und konnte auch schon viel nützliches von deiner Seite verwenden.
Danke
Andy
Andy23.09.09 11:36 | # |