widgets / categories nur auf bestimmten Seiten

  • Hallo Leute,

    bin Neuling (sowohl wordpress als auch php) und habe Folgendes versucht:

    Ich will in meiner Sidebar Elemente nur anzeigen lassen, wenn eine bestimmte Seite aufgerufen ist. Ich hab rausgefunden, dass das durch das Einsetzen des fett gedruckten Codes funktioniert:
    <?php if (is_page('termine07')) wp_list_pages('title_li=<h2>Themen</h2>'); ?>

    Meine Fragen:
    1. Wie reihe ich die Titel verschiedener Seiten im Code aneinander, wenn das Element z.B. auf "termine07", "reisen" und "urlaub" erscheinen soll?
    2. Welchen Titel hat die Startseite? (Ich würde ja auch gerne einige so definieren, dass sie z.B. auf der Startseite und bestimmten weiteren Seiten erscheinen.) "home", "index" usw. funktionieren schonmal nicht...

    Squirrel

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • danke und...

    Erstmal danke!

    Möchte aber gerne zu diesem Punkt 2 Fragen anschließen:
    Erstens:
    is_home() funktioniert fast genau nach meinen Vorstellungen.

    Ich hab's so eingebunden:
    <li><h2><?php if (is_home()) _e('Categories:'); ?></h2>
    <ul>
    <?php if (is_home()) wp_list_cats(); ?>
    </ul>
    </li>

    Ergebnis:
    Auf Unterseiten verschwindet die Überschrift "Categories" und auch die Liste darunter. Aber: weiter unten stehende Menüs schließen nur bis auf die Position der Liste auf, ein Feld in der Größe der Überschrift bleibt frei. Wie kann ich das ändern? (Der Einfachheit halber müsste sich der if-tag ja auf den kompletten Abschnitt beziehen können...)

    Zweitens:
    Wenn ich mit dem if (is_page('Seitenname')) arbeite, kann dann auch Platzhalter einfügen, sodass alle Seiten, die gleich beginnen, erfasst werden (Z.B. termine1, termine2, termine3 ...) und die Bedingung also für alle Seiten zusammen erfüllt wird, oder muss ich jede Seite von Hand eingeben.

    Danke
    squirrel

  • Erstmal danke!

    Möchte aber gerne zu diesem Punkt 2 Fragen anschließen:
    Erstens:
    (Der Einfachheit halber müsste sich der if-tag ja auf den kompletten Abschnitt beziehen können...)


    Tut's auch, musst du natürlich auch für den ganzen Block einbinden. ;-)

    PHP
    <?php if ( is_home() ) : ?>
    <li><h2><?php _e('Categories:'); ?></h2>
    <ul>
    <?php wp_list_cats(); ?>
    </ul>
    </li> 
    <?php endif; ?>

    Zweitens:
    Wenn ich mit dem if (is_page('Seitenname')) arbeite, kann dann auch Platzhalter einfügen, sodass alle Seiten, die gleich beginnen, erfasst werden (Z.B. termine1, termine2, termine3 ...) und die Bedingung also für alle Seiten zusammen erfüllt wird, oder muss ich jede Seite von Hand eingeben.


    Nein, das geht nicht. Da musst du so arbeiten:

    PHP
    if (is_page('termin1') || is_page('termin2') || ... ) {
      // action
    }
  • Ich möchte dich jetzt nicht überstrapazieren, aber hast du dafür noch ne Idee:

    Gegenstand sind die schon von dir erstellten Zeilen:
    [COLOR=#000000][FONT=Courier New][COLOR=#0000cc]<?php [/COLOR][COLOR=#006600]if ( [/COLOR][COLOR=#0000cc]is_home[/COLOR][COLOR=#006600]() ) : [/COLOR][/FONT][FONT=Courier New][COLOR=#0000cc]?>
    [/COLOR]<li><h2>[COLOR=#0000cc]<?php _e[/COLOR][COLOR=#006600]([/COLOR][COLOR=#cc0000]'Categories:'[/COLOR][COLOR=#006600]); [/COLOR][COLOR=#0000cc]?>[/COLOR]</h2>
    <ul>
    [COLOR=#0000cc]<?php wp_list_cats[/COLOR][COLOR=#006600](); [/COLOR][/FONT][FONT=Courier New][COLOR=#0000cc]?>
    [/COLOR]</ul>
    </li>
    [COLOR=#0000cc]<?php [/COLOR][COLOR=#006600]endif; [/COLOR][COLOR=#0000cc]?>[/COLOR] [/FONT][/COLOR]
    [COLOR=#000000][/COLOR]
    [COLOR=#000000][FONT=Courier New]Perfekt wäre das hier:
    Ich möchte die Bedingung so definieren, dass wp_list für alle Seiten AUSSER home ausgeführt wird. Kann man da mit is_page() und exclude arbeiten oder muss man das anders machen?

    [/FONT][/COLOR]

  • sorry, hab's verstanden. home ist ja nicht gleich page, also wenn ich is_page() als Bedingung angebe, steht es automatisch nicht auf home.

    Ich ändere daher meine Frage: Kanst du mir ein Beispiel für 2 gleichrangige Bedingungen geben?
    also wie verbinde ich if is_page(1) und is_home?

  • Ich ändere daher meine Frage: Kanst du mir ein Beispiel für 2 gleichrangige Bedingungen geben?
    also wie verbinde ich if is_page(1) und is_home?

    Logisches Oder:

    if ( is_page(1) OR is_home() ) bzw.
    if ( is_page(1) || is_home() )

    Es gibt auch noch den NOT-Operator, also z.B. if ( !is_home() )

    PHP: Logical Operators - Manual

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!