Zum Inhalt springen
Referenz

Template-Hierarchie für WordPress-Block-Themes

Die vollständige Template-Hierarchie für Block-Themes (FSE): für jeden Anfragetyp die geordnete Liste der Templates, die WordPress sucht – vom spezifischsten zuerst bis zum Rückgriff auf index.html. Das Gegenstück zum klassischen Hierarchie-Diagramm für die Block-Ära.

Für jede Anfrage sucht WordPress diese Templates der Reihe nach — das spezifischste zuerst — und hält beim ersten an, das im Ordner /templates deines Themes existiert. Die Kette endet immer bei index.html.

Startseite

Die Startseite der Website – unabhängig davon, ob dort deine neuesten Beiträge oder eine statische Seite angezeigt werden.

  1. front-page.html
  2. home.html
  3. index.html

front-page.html hat Vorrang, unabhängig von der Auswahl unter Einstellungen → Lesen. Ist die Startseite eine statische Seite und existiert keine front-page.html, greift die Kette für statische Seiten – nicht home.html.

Beitragsübersicht

Die Seite, auf der deine neuesten Beiträge aufgelistet werden (die „Beitragsseite“ unter Einstellungen → Lesen).

  1. home.html
  2. index.html

Einzelner Beitrag

Ein einzelner Blog-Beitrag.

  1. single-post-{slug}.html
  2. single-post.html
  3. single.html
  4. singular.html
  5. index.html

Einzelner Custom Post Type

Ein einzelner Eintrag eines Custom Post Types (z. B. ein „Buch“).

  1. single-{post-type}-{slug}.html
  2. single-{post-type}.html
  3. single.html
  4. singular.html
  5. index.html

Für einen Post Type „book“ mit dem Slug „dune“: single-book-dune.html, dann single-book.html, dann single.html.

Statische Seite

Eine normale WordPress-Seite.

  1. page-{slug}.html
  2. page-{id}.html
  3. page.html
  4. singular.html
  5. index.html

Seite mit benutzerdefiniertem Template

Eine Seite, der im Template-Bereich des Editors ein benutzerdefiniertes Template zugewiesen wurde.

  1. {custom-template}.html
  2. page-{slug}.html
  3. page-{id}.html
  4. page.html
  5. singular.html
  6. index.html

Benutzerdefinierte Templates werden im customTemplates-Array der theme.json deklariert und liegen in /templates. Das zugewiesene Template hat Vorrang vor der gesamten Seiten-Kette.

Kategorie-Archiv

Das Archiv, das die Beiträge einer Kategorie auflistet.

  1. category-{slug}.html
  2. category-{id}.html
  3. category.html
  4. archive.html
  5. index.html

Schlagwort-Archiv

Das Archiv, das die Beiträge mit einem bestimmten Schlagwort auflistet.

  1. tag-{slug}.html
  2. tag-{id}.html
  3. tag.html
  4. archive.html
  5. index.html

Archiv einer benutzerdefinierten Taxonomie

Das Archiv für einen Begriff (Term) einer benutzerdefinierten Taxonomie.

  1. taxonomy-{taxonomy}-{term}.html
  2. taxonomy-{taxonomy}.html
  3. taxonomy.html
  4. archive.html
  5. index.html

Autoren-Archiv

Das Archiv mit den Beiträgen eines Autors.

  1. author-{nicename}.html
  2. author-{id}.html
  3. author.html
  4. archive.html
  5. index.html

Datums-Archiv

Ein Jahres-, Monats- oder Tages-Archiv.

  1. date.html
  2. archive.html
  3. index.html

Post-Type-Archiv

Die Archiv-Übersicht eines Custom Post Types, bei dem has_archive gesetzt ist.

  1. archive-{post-type}.html
  2. archive.html
  3. index.html

Suchergebnisse

Die Ergebnisseite einer Website-Suche.

  1. search.html
  2. index.html

404 (nicht gefunden)

Wird angezeigt, wenn kein Inhalt zur URL passt.

  1. 404.html
  2. index.html

Anhang-Seite

Die Seite für einen einzelnen Medien-Anhang.

  1. attachment.html
  2. single.html
  3. singular.html
  4. index.html

Viele Websites deaktivieren Anhang-Seiten komplett (sie gelten als Thin Content). Wenn du sie behältst, gilt diese Kette.

Seite der Datenschutzerklärung

Die Seite, die in den Einstellungen als Datenschutzerklärung der Website festgelegt ist.

  1. page-privacy-policy.html
  2. privacy-policy.html
  3. page.html
  4. singular.html
  5. index.html

Wie sich das von der klassischen (PHP-)Hierarchie unterscheidet

  • Templates sind .html-Dateien in /templates, keine .php-Dateien im Theme-Stammverzeichnis. Es gibt keine single.php – es ist single.html.
  • Wiederverwendbare Bereiche (Header, Footer) sind Template-Teile (Template Parts) in /parts, die über den wp:template-part-Block eingebunden werden – nicht über get_header()- / get_footer()-PHP-Aufrufe.
  • Es gibt keine get_template_part()-Kette und kein get_header()/get_footer(). Die Zusammensetzung erfolgt über den Template-Part-Block innerhalb der .html-Dateien.
  • index.html ist ERFORDERLICH. Ein block theme ohne templates/index.html ist kein gültiges block theme – sie ist der obligatorische letzte Fallback für jede der oben genannten Routen.
  • Ein Theme wird zum block theme durch das VORHANDENSEIN von templates/index.html plus einer theme.json – nicht durch irgendein Header-Flag.
  • Du kannst jedes dieser Templates im Website-Editor (Design → Editor) bearbeiten und die Änderungen in der Datenbank speichern – diese ÜBERSCHREIBEN dann die Dateien des Themes, bis du die Anpassung zurücksetzt. Das überrascht alle, die dem Problem „Warum bewirkt meine Template-Änderung nichts?“ auf den Grund gehen.