Die verschiedenen Template Dateien in einem WordPress Theme

Ein wesentlicher Bestandteil eines WordPress Themes sind die enthaltenen Template Dateien. In diesem Beitrag gebe ich eine Übersicht der verschiedenen Templates und zeige auf, wann welche Dateien zum Einsatz kommen und von WordPress geladen werden.

Was sind Template Dateien?

Template Dateien sind PHP Dateien im WordPress Theme und verantwortlich für die Ausgabe des HTML Markups zur Anzeige der Website. Meistens bestehen sie aus einem Mix von HTML und PHP Code.

Grundsätzlich benötigt ein WordPress Theme nur eine einzige Template Datei: Die index.php

Die meisten Entwickler setzen jedoch spezialisierte Templates ein, um die Anzeige des Themes je nach Kontext anzupassen und häufig benötigte Template Blöcke in eigene Dateien auszulagern.

Es werden zwei Arten von Template Dateien unterschieden:

Query Templates
Diese Template Dateien werden bei einem bestimmten URL Request / Query von WordPress geladen. Unter anderem für einzelne Beiträge, statische Seiten oder Archive.
Beispiele: archive.php, single.php, home.php, page.php

Template Partials
Diese Dateien sind für die Darstellung eines bestimmten Bereichs wie dem Header, Sidebar oder Footer der Website zuständig. Sie werden in anderen Template Dateien eingebunden.
Beispiele: header.php, sidebar.php, comments.php, footer.php

Wann wird welches Template verwendet?

Wird eine Seite auf deiner Website aufgerufen, lädt WordPress im Hintergrund die richtige Template Datei des Themes.

Welche Template Datei geladen wird ist abhängig von der eingegebenen URL. Die Anzeige einer statischen Seite erfolgt durch andere Template Dateien als beispielsweise die Archive oder Suchergebnisse.

WordPress sucht dabei entlang des Pfads der Template Hierarchie nach der passenden Template Datei. Die obligatorische index.php befindet sich am Ende der Kette und wird nur geladen, falls im Theme kein spezifischeres Template für den Request existiert.

Die Template Hierarchie legt damit die Reihenfolge fest, mit der die Templates verwendet werden. Bei nicht existierenden Template Dateien wird zur nächsten Datei in der Hierarchie gesprungen.

Ein Überblick über die komplette Template Hierarchie bietet dieses Schaubild:

Quelle: developer.wordpress.org

Primäre WordPress Template Dateien

Als primäre Templates werden die Dateien eine Hierarchie-Ebene über der index.php bezeichnet. Es handelt sich mit um die häufigsten Template Dateien, die in Themes eingesetzt werden.

404.php

Wird genutzt, falls WordPress die angefragte Seite nicht in der Datenbank finden kann, egal ob es sich dabei um eine Kategorie, Seite oder Beitrag handelt.

home.php

Wird zur Anzeige der letzten Blog Beiträge (Blog Index) verwendet. Der Name ist deshalb etwas irreführend, weil das Template nicht zwangsweise auf der Startseite zum Einsatz kommt. Falls die Website eine statische Startseite in den Einstellungen konfiguriert hat, wird home.php stattdessen auf der Beitragsseite geladen.

archive.php

Das Archiv-Template wird für Kategorien, Schlagwörter, Monatsarchive oder Autorenseiten geladen. In vielen Themes existieren aber spezifischere, sekundäre Templates wie category.php oder author.php, welche stattdessen zum Einsatz kommen (siehe nächster Abschnitt).

search.php

Falls der Nutzer eine Suche durchführt, werden die Suchergebnisse mit diesem Template dargestellt.

page.php

Um eine einzelne, statische Seite anzuzeigen, wird die page.php des Themes aufgerufen.

single.php

Wird zur Ausgabe von einzelnen Beiträgen geladen.

singular.php

Dieses Template wurde erst mit WordPress 4.3 eingeführt und dient zur Anzeige von einzelnen Posts für alle Post Types (also Beiträge, Seiten, CPTs). Es wird in der Hierarchie nach der single.php und page.php, aber vor der index.php geladen.

Die singular.php wurde für sehr einfache Themes geschaffen, welche den gleichen Code zur Anzeige von statischen Seiten und Beiträgen nutzen. Anstatt single.php und page.php muss damit nur noch eine Template Datei erstellt werden.

index.php

Das Basis-Template, welches nur zum Einsatz kommt, wenn keine spezifische Template Datei existiert.

Sekundäre Template Dateien

Die sekundären Template Dateien sind noch eine Hierarchie-Ebene höher.

author.php / category.php / date.php / tag.php

Damit können für die verschiedenen Typen von Archiven wie Kategorien, Schlagwörter oder Autoren individuelle Templates genutzt werden, anstatt die generelle archive.php zu nutzen.

front-page.php

Falls sich im Theme eine Datei front-page.php befindet, wird immer dieses Template für die Startseite verwendet.

Es spielt dabei keine Rolle, ob in den Optionen eine statische Seite oder die letzten Blog Beiträge als Startseite gewählt wurden. Mit der Template Datei nimmt daher das Theme großen Einfluss auf den Inhalt der Startseite und kann beispielsweise einen Widget Bereich anstatt des normalen WordPress Loops darstellen.

Ohne die Template Datei wird ganz normal entweder die home.php (Blog Index) oder page.php (statische Startseite) geladen.

Variable Template Dateien

WordPress erlaubt außerdem variable Template Dateien im Theme, welche die Standard Templates für indivduelle Beiträge, Seiten, Kategorien, Schlagwörter oder Autoren überschreiben.

Einige mögliche Beispiele:

category-{slug}.php
Die Kategorie News erhält mit category-news.php ein eigenes Template, welches anstatt der allgemeinen category.php geladen wird.

page-{id}.php
Für die Seite mit der ID 24 nutzt WordPress das Template page-24.php, falls es existiert.

author-{nicename}.php
Die Beiträge des Admins werden in einem extra Template author-admin.php anders dargestellt.

Sehr wichtig sind die variablen Template Dateien auch, um für Custom Post Types eigene Templates bereitzustellen:

  • archive-{post-type}.php
  • single-{post-type}.php

Damit können beispielsweise für den Custom Post Type mit dem Slug portfolio mit archive-portfolio.php und single-portfolio.php individuelle Templates zur Anzeige des Portfolios erstellt werden.

Eine komplette Übersicht über alle Möglichkeiten findest du im WordPress Theme Handbook.

Standardisierte Template Parts

Neben den bisher vorgestellten Query Templates, welche direkt von WordPress anhand der Template Hierarchie geladen werden, gibt es auch noch Dateien für Template Parts.

Template Parts sind Teile des Templates bzw. Template Blöcke, welche in einer oder mehreren anderen Template Dateien geladen werden. Das hat den Vorteil, dass Code nicht in mehreren Templates wiederholt wird, sondern in einer einzigen Datei definiert ist.

Die folgenden Template Partials existieren in den meisten WordPress Themes und sind mit diesen Dateinamen als Standard definiert.

header.php

Zeigt den Header des Themes. Neben dem <head> Bereich der Website beinhaltet die Datei meistens noch Code zur Anzeige von Seitentitel / Logo und Navigationsmenü.

Wird von anderen Template Dateien mit der Funktion get_header() geladen.

sidebar.php

Die Template Datei enthält Code zur Darstellung von Sidebar Widgets. Wird von anderen Templates mit der Funktion get_sidebar() eingebunden.

footer.php

Enthält den Footer der Website, inklusive </body> und </html> am Ende des Templates. Wird von anderen Template Dateien mit der Funktion get_footer() aufgerufen.

comments.php

Diese Template Datei übernimmt die Darstellung der Kommentare. Wird üblicherweise in der single.php und page.php mit der Funktion comments_template() eingebunden.

searchform.php

Dient zur Darstellung des Suchformulars. Die Template Datei wird nur benötigt, wenn das Standard-Formular des Cores für das Suchfeld im Theme überschrieben werden soll.

Wird mit der Funktion get_search_form() geladen.

Eigene Template Parts

Neben den standardisierten Template Parts können Theme Entwickler auch eigene Template Parts mit beliebigen Namen erstellen. Viele Themes packen diese Dateien in den zusätzlichen Ordner /template-parts/.

In wieviele einzelne Template Dateien ein Theme aufgeteilt wird, bleibt dem Entwickler überlassen. Das neue Standard-Theme TwentySeventeen beispielsweise verwendet relativ viele Dateien für einzelne Template Parts.

Der Vorteil vieler Dateien ist, dass damit in Child Themes sehr kleine Teile des Themes modifiziert werden können (z.B. nur die Navigation), ohne gleich die ganze Datei (z.B. header.php) überschreiben zu müssen.

Statt mit extra Funktionen werden eigene Template Dateien mit der allgemeinen Funktion get_template_part() in anderen Template Dateien geladen.

Die verschiedenen Funktionen, um Template Dateien im Theme zu laden, werde ich demnächst auch noch in einem weiteren Beitrag genauer vorstellen.