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'; ?>
Diesen Blogartikel teilen:

Vladimir

Vladimir Simović arbeitet seit 2000 mit HTML & CSS und seit Januar 2004 mit WordPress. Im Laufe der Jahre hat er diverse Fachbücher und Fachartikel publiziert.

Verwandte Beiträge

11 Gedanken zu „WordPress: bin ich auf der Startseite?“

  1. 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.

  2. @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:

Kommentare sind geschlossen.