Ein Blog über Code, Hardware und Co

Wordpress und Webentwicklung, Kurz notiert

WordPress Widgets nur in bestimmten Kategorien anzeigen

Zuletzt aktualisiert am 14. November 2020.

Beim Aufbau einer Webseite und eines Blogs stößt man immer wieder auf spezifische Anforderungen. So möchte ich nun bestimmte Widgets in Abhängigkeit der Kategorie anzeigen, in der sich der jeweilige Beitrag befindet.
Und so geht das!

So kannst Du Widgets je nach Kategorie einblenden (kostenlos).

Mit Bordmitteln nicht möglich

Im Optimalfall könnte man natürlich direkt in der Widget-Verwaltung im Admin-Bereich einstellen, welches Widget wann angezeigt werden soll.
Da diese Funktionalität aber wohl etwas vom Mainstream abweicht, ist das leider nicht möglich. Wir müssen daher ein wenig Hand anlegen.

Der bequeme Weg: Mittels Plugin

Wie so häufig: Natürlich hatten auch andere Webseitenbetreiber schon das gleiche Problem wie ich. Und natürlich gibt es ein Plugin dafür 😉

Und zwar das Plugin Widget Options. Widget Options bietet eine unglaubliche Fülle an Konditionen. Allerdings sind leider nicht alle Funktionen in der kostenfreien Version nutzbar. Die Anzeige von Widgets in Abhängigkeit von Taxonomien oder der aktuellen Kategorie z.B. ist nur mit der kostenpflichtigen Pro-Version möglich.

Der Nerd-Weg: Über Anpassungen im PHP-Code

Über den Theme-Editor kann man einzelne Templates und Widgets direkt bearbeiten und so mit Hilfe von PHP-Code Widgets entsprechend nur dann anzeigen lassen, wenn man es möchte.
Wir können dafür die sog. “Conditional Tags” zur Hilfe nehmen. Conditional Tags sind nichts anderes als Funktionen, die auf einen Wert checken und true oder false, also wahr oder falsch zurückgeben.

Der Code (PHP) könnte dann wie folgt aussehen (Pseudocode):

if(in_category('4')){
//blende Widget ein
}

Achtung: Dieser Weg sollte nur gegangen werden, wenn alle Stricke reißen, bei fehlerhafter Anwendung kann es sein, dass die Webseite nicht mehr funktioniert.
Außerdem solltest Du Änderungen NUR an einem Child-Theme vornehmen, damit diese nicht bei künftigen Updates deines Themes überschrieben werden.

Der optimale Mittelweg: Conditional-Tags über WP-Options

Jetzt kommt der Clou! Wir können den einfachen Weg über ein Plugin mit dem Weg der Conditional Tags verbinden. Das geht so:

  1. Widget Options installieren
  2. In Widget Options das “Display Logic”-Modul aktivieren
  3. Dann in die Widget-Verwaltung (Design -> Widgets) wechseln und das betroffene Widget öffnen.
  4. Hier nun das Tab “Logic” öffnen und das entsprechende Conditional Tag eintragen. Wenn wir zum Beispiel unser Widget nur in Beiträgen angezeigt haben wollen, die der Kategorie mit der ID 4 zugeordnet sind, tragen wir dort
    in_category('4') ein.
  5. Fertig: Das Widget wird nun nur in Beiträgen, die der Kategorie mit der ID 4 zugeordnet sind, angezeigt.
Die kostenlose Lösung: Widget Options installieren -> Display Logic aktivieren -> Conditinal-Tag im Feld "Logic" hinterlegen

Viel Spaß!

  1. Avatar-Foto

    Roman

    Hallo Jan Dirk, funktioniert es auch mit Seiten? Habe es mal mit “page” und der SeitenID versucht. Leider erfolglos.lg

Schreibe eine Antwort