1) Core‑Prinzip
WordPress arbeitet mit einer Prioritätsliste pro Seitentyp. Die spezifischste gefundene Datei gewinnt. Wenn nichts passt, fällt alles auf „ zurück (muss in jedem Theme existieren).
2) Startseite / Blog – front-page.php
vs. home.php
Startseite („)
front-page.php
- (Wenn „Neueste Beiträge“ als Startseite) →
home.php
→index.php
- (Wenn „Statische Seite“ als Startseite) →
page-{slug}.php
→page-{id}.php
→page.php
→singular.php
→index.php
Blog‑Index (Beiträge‑Übersicht)
home.php
index.php
Merksatz:
front-page.php
= Startseiten‑Layout.home.php
= Blogliste (egal wo sie liegt).
3) Einzelseiten (Pages) – page.php
Aufruf einer Seite (Post‑Type „)
page-{slug}.php
(z. B.page-about.php
)page-{id}.php
page.php
singular.php
index.php
Seitentemplates (frei zuweisbar)
<?php /* Template Name: Landing Page */ ?>
→ Eigene Datei mit Header kommentieren. Diese kannst du im Editor für eine Seite auswählen. Hat Priorität vor der obigen Liste.
4) Einzelne Beiträge – single.php
& single-post.php
Aufruf eines Beitrags (Post‑Type „)
single-post.php
single.php
singular.php
index.php
Custom Post Types
single-{posttype}.php
(z. B.single-portfolio.php
)- Fallbacks wie oben.
Hinweis: Eine Datei
post.php
gehört nicht zur Hierarchie. Gemeint ist meistsingle.php
odersingle-post.php
.
5) Archive & Listen
- Allgemeines Archiv:
archive.php
→index.php
- Custom Post Type Archiv:
archive-{posttype}.php
→archive.php
→index.php
- Kategorie:
category-{slug}.php
→category-{id}.php
→category.php
→archive.php
→index.php
- Tag:
tag-{slug}.php
→tag-{id}.php
→tag.php
→archive.php
→index.php
- Autor:
author-{nicename}.php
→author-{id}.php
→author.php
→archive.php
→index.php
- Datum:
date.php
→archive.php
→index.php
- Taxonomie‑Term:
taxonomy-{taxonomy}-{term}.php
→taxonomy-{taxonomy}.php
→taxonomy.php
→archive.php
→index.php
6) Suche, Fehler & Anhänge
- Suche:
search.php
→index.php
- 404:
404.php
(kein Fallback – wenn fehlt, sieht man je nach Theme leere/unerwartete Ausgabe) - Attachment:
image.php
/video.php
/audio.php
/application.php
→attachment.php
→single-attachment.php
→single.php
→singular.php
→index.php
7) Entscheidungsbaum (vereinfachte Sicht)
/ (Root)?
├─ front-page.php vorhanden? → ja → rendern
└─ WP-Einstellung „Neueste Beiträge“?
├─ ja → home.php → index.php
└─ nein (statische Seite) → page-{slug}.php → page-{id}.php → page.php → singular.php → index.php
Einzelner Inhalt (singular)?
├─ Typ page → page-{slug}.php → page-{id}.php → page.php → singular.php → index.php
└─ Typ post oder CPT → single-{post_type}.php → single.php → singular.php → index.php
Archiv (listing)?
├─ Spezifische Datei (category-*, tag-*, taxonomy-*, author-*, date, archive-{post_type})
└─ archive.php → index.php
Sonderfälle: search.php | 404.php | attachment‑Templates
8) Best Practices im Theme
- „ minimal halten (Fallback), eigentliche Layouts in spezifische Templates auslagern.
- Header/Footer/Loops in
template-parts/
kapseln (gettemplatepart('template-parts/content','post')
). - Keine Logik duplizieren: Nutze
singular.php
als generisches Single‑Fallback. - „ nur, wenn du wirklich eine dedizierte Startseite willst.
- Für den Blog‑Index immer eine „ anlegen.
- 404 nicht vergessen – bessere UX & SEO.
9) Pinegrow‑Tipps
- Lege gezielt die Dateien an, die du brauchst (
front-page.php
,home.php
,single-post.php
,page.php
). - Nutze Smart Components / Template Parts für wiederkehrende Blöcke (Hero, Cards, Footer).
- Für Customizer‑abhängige Inhalte (z. B. Hintergründe) nicht mit Inline‑Styles binden, sondern via CSS‑Variablen (siehe anderes How‑To).
- Prüfe in der Pinegrow‑Vorschau, welche Datei gerendert wird (URL & Seitentyp beachten).
10) Mini‑Snippets
Standard‑Loop (Archiv/Blogliste)
<?php if (have_posts()): ?>
<?php while (have_posts()): the_post(); ?>
<?php get_template_part('template-parts/content', get_post_type()); ?>
<?php endwhile; ?>
<?php the_posts_pagination(); ?>
<?php else: ?>
<p><?php _e('Keine Inhalte gefunden.', 'wpcgrau'); ?></p>
<?php endif; ?>
Single (Beitrag)
<?php while (have_posts()): the_post(); ?>
<?php get_template_part('template-parts/content', 'single'); ?>
<?php the_post_navigation(); ?>
<?php comments_template(); ?>
<?php endwhile; ?>
Seitentemplate Header
<?php /* Template Name: Landing Page */ ?>
11) Häufige Missverständnisse
- „ ≠ Startseite. Es ist die Blogliste.
- `
ist kein offizielles Template. Gemeint ist meist
single-post.php`. - Kein Fallback für „ – diese Datei explizit anlegen.
12) Checkliste: Welche Datei brauche ich?
- Eigene Startseite (Hero, Sektionen): „
- Blogliste (Beiträge): „
- Einzelner Blogpost: `
(oder
single.php` für alle) - Statische Standardseite: `
(ggf.
page-{slug}.php` für Spezialseiten) - Beliebige Singles (Fallback): „
- Sammlung/Listen: „ (+ spezifische Varianten)
- Suche: „
- Fehlerseite: „