Weblog der perun.net webwork gmbh mit Artikeln zum Thema WordPress, Webwork, und Internet. Ältere Artikel findest du im Archiv.
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'; ?>
1. – flöschen
Kommentar vom 04. Februar 2010 um 23:37
Danke für den Tipp. Daran habe ich heute auch etwas herumstudiert, besonders, weil nicht alle Funktionen aufgelistet sind im Codex…
2. – mike
Kommentar vom 05. Februar 2010 um 17:01
'ne Frage zum Verständnis, matcht nicht front_page immer, egal, ob Kategorie oder Page?
3. – Perun
Kommentar vom 05. Februar 2010 um 17:42
@mike,
is_front_page()wirkt nicht, wenn als Startseite die Auflistung der Blog-Artikel (Standardeinstellung) gegeben ist.4. – Frank
Kommentar vom 05. Februar 2010 um 18:58
Zum Verständnis kann das Plugin Debug Objects sehr nützlich sein, dort wird einem gezeigt, welches dieser Condtional Tags aktiv ist.
5. – Ralf
Kommentar vom 05. Februar 2010 um 20:29
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.6. – Perun
Kommentar vom 05. Februar 2010 um 22:18
@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"?
7. – Stefan
Kommentar vom 23. Februar 2010 um 16:09
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
8. – WordPress: Inhalte auf der Startseite steuern | Peruns Weblog
Pingback vom 10. April 2010 um 16:38
[...] Bei der Abfrage der Startseite bitte auch folgenden Artikel beachten: WordPress: bin ich auf der Startseite? [...]