Wenn man am WordPress-Theme Änderungen durchführt, dann passiert häufiger dass man bestimmte Inhalte nur auf der Startseite haben möchte. Wenn man sich die Hierarchie der Template-Dateien in der offiziellen WordPress-Dokumentation anschaut, dann sieht man, dass für die Ausgabe der Startseite standardmäßig die index.php zuständig ist.
Allerdings ist die index.php auch für die Ausgabe der Archive (Datum, Kategorie, Tags etc.) zuständig, sofern die jeweiligen Template-Dateien (z. B. archive.php) nicht vorhanden sind.
Möchte man mit einer Datei nur die Startseite ansprechen, dann sollte man im Themes-Verzeichnis eine Datei mit dem Namen home.php haben. Diese Datei ist zuständig nur für die Startseite und das “Hauptarchiv”: der chronologischen Auflistung aller Artikel.
Möchte man keine zusätzlichen Template-Dateien erstellen, dann kann man auch mit den Conditional-Tags arbeiten. Fügt man folgendes in die index.php ein…
<?php if(is_home()) echo "Hallo Welt!"; ?>
… dann erscheint dies auf der Startseite und im “Hauptarchiv”. Möchte man etwas nur auf der Startseite und nicht im “Hauptarchiv” haben, dann fügt man folgendes ein:
<?php if(is_home() and !is_paged()) echo "Hallo Welt!"; ?>
Der and !is_paged())
verhindert, dass der Inhalt auf den Unterseiten des “Hauptarchivs” erscheint.
WordPress als “klassisches” CMS: Seite (Page) als Startseite
Wie verhält es sich aber, wenn man nicht die Auflistung der aktuellen Beiträge als Startseite hat sondern wenn man eine Seite bzw. Page als Startseite definiert so wie es in der folgenden Abbildung angedeutet ist?
Will man hier auf der neuen, “statischen” Startseite exklusive Inhalte haben, dann kann man auch hier auf zwei Wegen aktiv werden. Entweder man erstellt eine neue Template-Datei, aber hierbei heißt sie nicht home.php sondern front-page.php.
Willst du lieber mit dem passenden Conditional Tag arbeiten, dann schaut der Code-Block folgendermaßen aus:
<?php if(is_front_page()) echo "Hallo Welt!"; ?>
Erstellt du jetzt aber ein Theme, was für die Öffentlichkeit vorbestimmt ist und du möchtest das bestimmte Inhalte immer auf der Startseite erscheint, dann würdest du in der index.php folgendes einfügen:
<?php if(is_home() and !is_paged() or is_front_page()) echo '...'; ?>
Und wie schaut es mit der Artikelseite aus?
Ebenfalls unter Lesen → Einstellungen kann man bestimmen, an welcher Stelle die aktuellsten Blogbeiträge aufgelistet werden. Dafür wählt man eine leere Seite aus und in diese werden die Artikel von WordPress automatisch “eingefügt”.
Man möchte meinen, dass diese Seite (Page) irgendwie über page.php oder front-page.php ansprechbar ist. Nein, sie kann man entweder über die Template-Datei home.php bzw. index.php oder über den Conditional Tag is_home()
steuern.
Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienstleistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.