Das Geheimnis der WP Template Hierarchie – Template Cheat Sheet zum Ausdrucken

cheat sheet zum Ausdrucken zur Template Hierarchie von WordPress
Cheat Sheet zum Ausdrucken zur Template Hierarchie von WordPress

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.

WordPress Cheat Sheet Download für alle Eiligen :-)

Im Download ist das große Bild 3072 X 2304 und eine .pdf Datei enthalten.

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.

Was muss ein WordPress Theme unbedingt haben

  1. index.php
  2. style.css

Alles andere ist *Zusatz* ;)

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:

Einzelansichten, Posttypes, Darstellung eines Artikels

single.php

Die single.php zeigt einen Artikel in der Einzelansicht an. Ist sie nicht vorhanden nimmt WP dafür die index.php.

Seit WP 3.0 kann man unterschiedliche Posttypes selbst erstellen. Dazu kommt noch ein Artikel, soweit sei erwähnt:

single-posttype.php==>single.php==>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.==> Achten auf die Schreibweise:case sensitiv!

Linktipp:

is_singular()

Der conditaional Tag is_singular fragt alle Einzelansichten ab: vom Bild, Video, (pseudo)statische Seite, Einzelansicht des Artikels, die Kommentare etc.

Achtung: is_singular und is_single sind 2 verschiedene Sachen!
Is_singluar fragt jede Einzelansicht ab, das kann statische Seite, Bildanhang, Video.php etc sein. Is_single fragt nur die Einzelansicht eines Artikels ab!

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.

video.php, text.php.image.php (also jeder MimeType) ==> attachment.php==>single.php==>index.php

AB WP 2.9 kann man für jeden MIME Type ein eigenes Template erstellen. text.php, video.php etc etc…

Conditional Tag

  • is_attachment ()

Kommentare

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')); ?>


virtuelle statische Seiten mit WordPress

yourname.php page-slug.php page-id.php page.php

ab WP 2.9:

yourname.php, page-slug.php page-ID.php page.php

WP kennt (virtuelle) 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==>page-slug.php ==>page-ID.php ==>page.php ==>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:

Alles was mit *archivieren* zu tun hat Zeitarchive, Kategorien, Tags, Taxonomien

category-slug.php 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.

category-slug.php==>category-id.php==>category.php==>archive.php==>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.

Unterschied zwischen IS_ oder IN_category

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:

  • Bei jeder Kategorie soll ein Text dabei stehen.
  • Plugin Magic Kategorie

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.

date.php==>archive.php==>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-id.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.

tag-slug.php==>tag-id.php==>tag.php==>archive.php==>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. ==> auf die Groß-Kleinschreibung achten!

taxonomy-taxonomy-term.php, taxonomy-taxonomy.php taxonomy.php

Du kannst Artikel nun mittels Kategorien, Tags und Taxonomien ordnen.
Die Taxonomien fallen somit unter dem Hauptbegriff des „Archives“.

taxonomy-taxonomy-term.php==> taxonomy-taxonomy.php==> taxonomy.php==>archive.php==>index.php

Taxonomien werden nicht alle Blogger brauchen, aber die die viel zu sortieren haben, die reiben sich jetzt sicher vor Freud die Hände über WP 3.0 :-)

conditional Tags:

  • is_tax() wenn eine Taxonomy Archivseite auftaucht.
  • is_tax(‚buecher‘) nur die Taxonomie Archive mit der URL *buecher* ==>case sensitive(!)
  • is_tax(array(‚buecher‘,’autor‘,’krimi‘)) nur für die Txonomie Archivseiten mit der URL:entweder buecher oder autor oder krimi

is_taxonomy() fragt ab, ob eine bestimmte Taxonomie bei WP registriert wurde.

author-nicename.php author-id.php 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.

author-nicename.php==>author-id.php==>author.php==>archive.php==>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

Admin

Den Admin fragt man am leichtesten mit

is_admin() ab ;)

Such- und Error 404 (not found) Anzeige

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.

Wer seine Startseite wirklich komplett anders gestaltet hat ist gut daran eine eigene search.php zu erstellen.
Man dazu ganz einfach die archive.php oder category.php öffnen und als search.php speichern. Das ist die simpelste Möglichkeit.

search.php==>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.

404.php==> index.php

Conditional Tag:

  • is_404()

Linktipp:

Ab da wirds WordPress Theme machen einfach lustvoll und spannend:

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.

loop.php

Die scheint zwar in der Template Hierarchie nicht auf, aber Twenty Ten ist da ein tolles Anschauungsgebiet und ich werde mich da sicher näher drauf einlassen.

Alle loops in ein template packen.

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 &gt– nextpage–< umgebrochen hat. Dafür gibt es keine Abfrage, dies mußte ich schmerzlichst selber erfahren ;)

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.

is_sticky

Fragt ab, ob der Artikel festegepinnt also *sticky* ist-man kann auch mit der ID des Artikels genau den bestimmten Artikel abfragen.

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

Im Download ist das große Bild 3072 X 2304 und eine .pdf Datei enthalten.

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..

dann blogge darüber
twitter es weiter
meld es bei Deinem Social Network

Danke!

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.

Update am 28.06.2010:
vom Nov.09-Juni 10- 1102 Downloads, [insgesamt 5523 Downloads seit Sept. 09] Counter wird zurückgestellt.
Neues .pdf., neues Bild, Erweiterung der conditional comments und der Erklärungen der neuen Templates.

;)
22

22 Beiträge zu “Das Geheimnis der WP Template Hierarchie – Template Cheat Sheet zum Ausdrucken

  1. Kommentar Autor
    Ralf
    Kommentar

    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

  2. Kommentar Autor
    Ralf
    Kommentar

    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

  3. Kommentar Autor
    Monika
    Kommentar

    Hi Ralf Du magst – so ich verstand – nicht abfragen

    is category , weil dies bedeutet ja *wenn es die Kategorie ist*, sondern Du magst,

    wenn

    in_category('6') 
    

    also wenn der Artikel IN der Kategorie 6 ist

    oder?

    lg

  4. Ping 10 Spickzettel oder Cheat Sheets

  5. Ping pixelfreund.ch » Archiv » Cheatsheets - Spickzettel für Photoshop, Wordpress, CSS…

  6. Kommentar Autor
    Ludwig
    Kommentar

    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

  7. Kommentar Autor
    Ludwig
    Kommentar

    Das war die Lösung, ich danke dir!

    So funktioniert es:

    
    if (get_the_author() == 'admin')
    
        {
    
        print "Hallo, ich bin der Admin";
    
        }
    
  8. Ping Weitere Templates einbauen -2.Header-3.Sidebar-2.Kommentartemplates

  9. Kommentar Autor
    thomas57
    Kommentar

    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

  10. Kommentar Autor
    Clarissa
    Kommentar

    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

  11. Kommentar Autor
    Kai H.
    Kommentar

    Tausend dank! Das Sheet ist echt gold wert!

  12. Kommentar Autor
    Andy
    Kommentar

    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

  13. Ping Update des Cheat Cheet zur WP Template Hierarchie

  14. Ping Wordpress 2.9 erschienen – Was gibts neues? | michaelplas.de

  15. Kommentar Autor
    Nick
    Kommentar

    Hallo,
    Ich glaube die Entwickler haben ein fehler drin.
    Im neuem WP gibt es ja die Menü-funktion die ich in einem Aktuellen Projekt einsetze.
    Klappt auch alles super bis auf das statische Seiten kein current_page_item in der liste vergeben wird. Das ist sehr ärgerlich da ich mit einigen Menü-Elementen auf Kategorien mit einem statischen Link zeige. Für mich ist das ein Bug und macht das Markieren von Aktiven Elementen unbrauchbar, ich kann ja nicht ein paar markieren und ein paar nicht.

    Oder gibt es da ein workflow für?

    Beste Grüße
    Nick

  16. Kommentar Autor
    Dave
    Kommentar

    Mittlerweile gibt es soviele schlechtgemachte WordPress-Templates, dass man wirklich froh sein kann – so ein tolles Cheat-Sheet zu finden, um die Dinger einfach weiterhin selbst zu bauen. Vielen Dank dafür..

  17. Ping Noindex gezielt in WordPress verwenden

  18. Ping Chat-Thread - Seite 2194 - XHTMLforum

  19. Ping Bookmarks der Woche - Bookmarks - Webworker Blog