WordPress-Tipp: Bestimmte Webseiten-Elemente nur auf der Startseite anzeigen

Manchmal möchte man ein bestimmtes Element einer Webseite nur auf der Startseite anzeigen. Dies könnte zum Beispiel ein Headerbild oder ein kleiner Introtext im Headerbereich sein, aber natürlich auch jedes andere Webseiten-Element. In WordPress gibt es für diesen Fall die praktische Funktion is_front_page. Im folgenden kleinen Artikel habe ich zwei Code-Beispiele zusammen gestellt, um die Funktion etwas genauer zu beschreiben.

Beispiel 1: Ein bestimmtes Element nur auf der Startseite anzeigen

Wenn du z.B. ein Headerbild in der header.php Datei integriert hast, dieses aber nur auf der Startseite zeigen möchtest, kannst du die Bedingung is_front_page zusammen mit einer PHP if-Abfrage einsetzen. Dein Code würde dann ungefähr so aussehen:

<?php if (is_front_page() ) : ?>

	<img src="<?php echo get_template_directory_uri(); ?>/images/yourheaderimage.jpg" width="850" height="300" class="header-image" />

<?php endif  ?>

Natürlich muss das Element nicht unbedingt ein Bild sein. Du kannst auch jedes andere Element (auch in einer anderen Template-Datei wie z.B. der footer.php Datei) mit diesem Code allein auf der Startseite anzeigen.

Beispiel 2: Ein Element nur auf der Startseite anzeigen und auf allen anderen Seiten mit einem anderen ersetzen

Falls du auf allen anderen Seiten deiner Webseite ein anderes Element (statt des Elements auf der Startseite) anzeigen möchtest, kannst du auch mit einer if/else-Bedingung arbeiten. Hier das Beispiel: Um ein Headerbild auf der Startseite, und einen kleinen Intro-Slogan auf allen weiteren Seiten und Artikeln anzuzeigen, kannst du folgenden Code verwenden:

<?php if (is_front_page() ) : ?>

	<img src="<?php echo get_template_directory_uri(); ?>/images/yourheaderimage.jpg" width="850" height="300" class="header-image" />

<?php else : ?>

	<p class="introslogan"><?php _e('Das ist ein kleiner Introtext, der das Headerimage auf allen Seiten außer der Startseite ersetzt.', 'yourthemename') ?></p>

<?php endif  ?>

Bei der WordPress-Funktion is_front_page ist es übrigens egal, ob du die neusten Blog-Artikel oder eine statische Seite als Startseite nutzt. Alternativ dazu funktioniert die WordPress-Funktion is_home nur, wenn du deine neusten Blogartikel auf deiner Startseite anzeigst.

Weitere Infos zur Funktion is_front_page kannst du auch noch im WordPress Codex nachlesen. Ich hoffe, dass du diesen kleinen WordPress-Tipp hilfreich findest. Über Fragen oder Ergänzungen zum Artikel freue ich mich sehr!

28 Kommentare

  1. Hallo,
    danke für die Tipp! – Andere Frage: Wie ist es möglich für verschiedene Seiten jeweils ein unterschiedliche Headerbilder oder Logos einzubinden? Ich such nach eine Art Abfrage, die checkt auf welcher Seite sich der User befindet und dann verschiedene Grafiken ausgibt. Ich würde gerne das Logo z.B. auf jeder Seite anders einfärben. Wie könnte man so etwas realisieren?

    Viele Grüße und weiter so, ich lese regelmäßig.

    • Könnte mir vorstellen, dass man sowas mit dem Seitennamen realisieren kann. Also quasi mit PHP.
      Kurze Erklärung: Für die Seite „Hallo Welt“ gibt es die Grafik „hallo-welt.jpg“. Dann überprüft man für jede Seite, ob es eine Grafik gibt, die so heißt wie Seite selbst (file_exists), ansonsten default-bild ausgeben.
      Wäre jetzt so mein erster Lösungsansatz ;-)

    • Einfach anstatt is_front_page() die Funktion is_page(ID) benutzen und als ID jeweils die Post/Page-ID der jeweiligen Seite angeben. Diese ID steht bespielweise beim Editieren in der URL.

    • Hi Tilo,

      Um Ellens schönes Beispiel zu erweitern, kannst du beispielsweise definieren, dass Dein individueller Header nur bei Beiträgen angzeigt wird, die der Kategorie „Allgemein“ zugewiesen wurden:

      <!-- Artikel der Kategorie "Allgemein" nach SLUG -->
      <?php if (is_single() && in_category('allgemein')) { ?>
      <div>
      <img src="<?php echo get_template_directory_uri(); ?>/images/yourheaderimage.jpg" title="<?php the_title(); ?>;"width="850" height="300" class="header-image" />
      </div>
      <?php } ?>
      

      Horst hat zudem einen guten Hinweis geliefert: http://wordpress.org/extend/plugins/widget-logic/
      Nach Aktivierung des Plugins erscheint ein Inputfeld für „Widget logic“ innerhalb der Adminseite für Widgets.

      Beispiele
      Folgende Beispiele beziehen sich auf die Slug-Variante (siehe Permalinks).

      Trage in das Inputfeld für „Widget logic“ folgende Definitionen ein, um den Widgetinhalt für bestimmte Inhalte bzw. Inhaltstypen anzeigen zu lassen:

      für den Inhaltstyp „Artikel“: is_single()

      Beispiel für Widgetanzeige für Seite mit Permalink http://www.mein-blog.de/beitrag
      Inputfeld „Widget logic“: is_single('beitrag')

      Für mehrere Artikel („beitrag“, „beitrag1“, „beitrag2“) array verwenden.
      Inputfeld “Widget logic”:
      is_single(array('beitrag','beitrag1','beitrag2'))

      Widgetanzeige für Beiträge, die der Kategorie „Allgemein“ zugewiesen sind:
      Inputfeld “Widget logic”:
      is_single() && in_category('allgemein')

      Auschluß-verfahren:
      Widgetinhalt wird überall angezeugt, außer auf Seite „Kontakt“:
      Inputfeld “Widget logic”:
      !is_page('kontakt')

      Mehr Infos zu den Conditional Tags findest bei WordPress:
      is_page()
      is_single()

      Vielleicht hilft es dir ja etwas weiter.

      Lieben Gruß, Jonathan

  2. Absolut guter Tipp! Als ich den vor etwa einem halben Jahr zum ersten Mal benutzt habe, war ich absolut froh, ihn gefunden zu haben ;-)

  3. Ha! Vielen Dank für diesen Tipp :)
    Den werde ich gleich morgen umsetzen, um meine Seitenleiste ein bisschen schlanker zu gestalten.

  4. hallo ihr lieben und hallo liebe ellen :)
    mit deiner hilfe habe ich meinen blog irgendwie zusammengebastelt jetzt hab ich gemerkt das du schon 3 neue updates rausgebracht hast für das bugis :)
    helft mir bitte auf die sprünge wie ich das theme update denn irgendwas stimmt nicht mit der kommentarfunktion …mir wurde gesagt man kann keine kommentare abgeben …bitte um Hilfe DANKE liebe Grüsse

  5. Olaf Szymanski 5. Dezember 2011

    Ich arbeite gerade an der Umgestaltung des Bugis Themes und das Ausblenden will einfach nicht funktionieren :( Stell ich mich einfach an oder funktioniert dieser Code nicht so ganz mit BUGIS?

    • Olaf Szymanski 5. Dezember 2011

      Ich füge folgenden Code in die index.php ein:

      test

      Resultat: „test“ wird auf jeder Seite angezeigt… egal ob Hauptseite oder „page/2/“

      Was mache ich wohl falsch?

    • Hallo Olaf,

      nein, dieser Code-Schnipsel funktioniert eigentlich Theme-Unabhängig, hast du es alternativ schon einmal mit is_home getestet?

      Wenn du magst, kannst du mir deine Datei gerne direkt mailen, dann teste ich es noch einmal selbst.

      Viele Grüße,
      Ellen

  6. Olaf Szymanski 5. Dezember 2011

    Könnte es sein dass „*Blogurl*/page/2“ noch zur Home bzw. „Frontpage“ gehört?

    • Ach so, jetzt verstehe ich, ja, die weiteren Seiten der Blogartikel-Übersicht gelten auch als „Startseite“, sobald du auf einen Einzelartikel oder auf eine Seite klickst, sollte dein Text dann nicht mehr angezeigt werden.

  7. Hallo Ellen.
    Schätze dieses Blog sehr und seine Tipps. Habe eine Frage: suche eine halbwegs einfache (also auch für nicht-Programmierer) Lösung um auf der Startseite einen Block (z.B. mit nextgen galerie) zwischen header und Content einzublenden? Also ein Element, dass die gesamte Breite einnimmt? Also
    Header
    Block
    sidebar Content
    Footer
    Danke für allfällige Antworten und Tipps.

  8. Hallo Zusammen,

    ich verzweifle seit paar Tagen an einem Problem.

    Ich möchte auf meiner Seite in den Header einen Slider einbauen der ausschließlich auf der Startseite zu sehen ist.

    Ich verwende das WordPress Theme „Platform 1.4.1 von PageLines“.
    Als Slideshow verwende ich das Plugin „NextGEN Gallery“ Version 1.9.2.

    Mir ist es gelungen die Slideshow zentriert in meinen Header einzufügen.

    Jetzt habe ich versucht mit folgendem Quellcode den Slider auf den anderen Seiten auszublenden.

    Leider ohne Erfolg :-(

    Kann mir jemand sagen wo mein Fehler liegt?

  9. Grrrr, ich krieg es nicht hin.
    Mit einem Artikel funktioniert es gut, stelle ich es jedoch um auf:
    ———————–
    Für mehrere Artikel („beitrag“, „beitrag1“, „beitrag2“) array verwenden.
    Inputfeld “Widget logic”:
    is_single(array(‚beitrag‘,’beitrag1′,’beitrag2′))
    ———————–
    wird mir nichts angezeigt. Woran kann es liegen?
    Für einen Tipp wäre ich äußerst dankbar.
    Verwende das Thesis Theme.

    Grüße aus München

  10. Hi Zusammen, ist schon was älter hier, aber ich hab nichts frischers gefunden um Rat zu holen. Evtl. kann mir jemand helfen. Ich lasse auf jeder Archivseite oben einen Text über ausgeben. Dies möchte ich aber nur auf der ersten Archivseite (also meinen Kategorieseiten) so haben und ab Seite 2 soll der Text nicht mehr erscheinen. Ich bin leider zeimlich unwissend was das angeht.
    Der obere Teil sieht bisher so aus:

    und genau die dritte Zeile soll nur auf der Page 1 erscheinen (was ja nun auch geht), aber nicht mehr auf Page 2 und folgend. Für euch sicher sehr einfach, für mich leider nicht. Freue mich über jeden Tipp. Grüße Marli

  11. Hi, oh mein Code ist oben verwschwunden, ich setzte den mal ohne das php darum rein.
    Also die archive.php:
    if (is_category()
    single_cat_title()
    Danach meine Ausgabe der: category_description()
    Und die category_description() soll nur auf der ersten Archive Page erscheinen.
    Ich hoffe ich habe das jetzt richtig reingesetzt :-)

  12. Hallo,

    erstmal danke für die guten Tipps – haben mir beim Entwickeln meiner Website schon gut weitergeholfen. Allerdings habe ich nun trotzdem als kompletter WordPress-Newbie eine Frage: Ich möchte, dass meine Slideshow nur auf der Startseite angezeigt wird – welche Angaben müssen dafür in den Code? Hab im Web bislang noch nichts nützliches dafür gefunden, also bitte nicht hauen wegen meiner Unwissenheit :D.

    Viele Grüße

    Simon

  13. Hey,

    wenn ich bei einem eurer Themes (Cocoa) genau das tun möchte, wo füge ich dann den Code ein?
    Ich möchte, dass das Logo, bzw. der Text (in eurer Demo: Cocoa — thoughts & dreams by elma) nur auf der Startseite erscheint.

    Könnt ihr mir helfen? Danke

  14. Hallo Ellen,

    die Anleitung ist toll, ich benötige jedoch genau das Gegenteil, zum Beispiel eine bestimmte Classe auf der Startseite ausblenden. Sprich einen Newsticker der überall angezeigt wird, soll nicht auf der Startseite erscheinen. Ich habe bisher das raus bekommen…

    aber wie soll der Code aussehen? Was muss ich reinsetzen das eine bestimmte Funktion oder Klasse ausgeblendet wird? Es geht um diese Menüanweisung.
    Hast du da einen Tip für mich wie ich das mit dieser Anweisung per php ausblenden lassen kann?

    LG
    Katja

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *