WordPress: bin ich auf der Startseite?

Frag den WordPress-Experten Und wieder ein Artikel aus der Reihe Frag den WordPress-Experten. Der Nutzer hat bei einem kleinen Projekt WordPress als “klassisches” CMS eingesetzt und wollte wissen, wie er in den Template-Dateien abfragen kann, ob man sich auf der Startseite befindet.

Will man bei einer WordPress-Installation herausfinden, ob man sich auf der Startseite befindet, dann kommt folgender Conditional Tag zum Einsatz:

<?php if(is_home()) echo 'irgendetwas'; ?>

Allerdings muss hierbei erwähnen, dass is_home() lediglich Auskunft gibt ob man sich auf der Hauptseite des Blogs befindet. Will man jedoch wirklich nur die Startseite ansprechen und nicht die Folgeseiten der Hauptseite, dann kommt folgender Code zum Einsatz:

<?php if(is_home() and !is_paged()) echo 'irgendetwas'; ?>

Setzt man aber WordPress als “klassisches” CMS ein … also bei Projekten ohne Blogcharakter, dann wird meistens in “Einstellungen” ⇒ “Lesen” eine Seite (Page) als Startseite bestimmt. Hier greift aber die obere Abfrage nicht, weil man sich nicht mehr auf der Hauptseite sondern auf einer Page befindet. Folgender Code kommt hier zum Einsatz:

<?php if(is_front_page()) echo 'irgendetwas'; ?>

Will man jetzt beide Fälle abdecken, zum Beispiel weil man ein freies WordPress-Theme entwickelt, dann würde das Code-Fragment so ausschauen:

<?php if(is_home() and !is_paged() or is_front_page()) echo 'irgendetwas'; ?>

Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienst­leistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.

Verwandte Beiträge:

11 Kommentare

  1. Danke für den Tipp. Daran habe ich heute auch etwas herumstudiert, besonders, weil nicht alle Funktionen aufgelistet sind im Codex…

    1. @mike,

      is_front_page() wirkt nicht, wenn als Startseite die Auflistung der Blog-Artikel (Standardeinstellung) gegeben ist.

  2. Gehört nicht direkt zum Thema, es ist jedoch besser wenn man Bedingungen mit Klammern ergänzt.

    if ($a and !$b or $c) kann zu unerwünschten Ergebnissen führen. Denn die Operatoren (and, or, not, usw) haben eine bestimmte Reihenfolge in der sie abgearbeitet werden. Besser wäre also <?php if( ( is_home() and !is_paged() ) or ( is_front_page() ) ) echo 'irgendetwas'; ?>. Nebenbei wird so auch die Lesbarkeit erhöht.

  3. @Ralf,

    ich habe es gedacht es so zu schreiben, wie du es genannt hast, aber ich dachte dass dann von euch erfahrenen PHP-Hasen der Hinweis kommen könnte: “Warum so kompliziert, es geht auch kürzer”? :mrgreen:

  4. Vielen Dank für diesen Tipp!
    Dieser hat mich letzten Endes auf die richtige Spur gebracht. Ich war schon am Verzweifeln! 🙂

    Viele Grüße!

    Stefan

Kommentare sind geschlossen.