WordPress: Sidebar pro Seite oder Beitrag wählen

Sidebars und ihre Widgets sind meiner Ansicht nach eine der genialsten Features in WordPress. Sie erlauben es, einer Seite die nötige Individualität zu geben und Infos unterzubringen, die nicht in den Artikel- oder Seiten-Content passen. Ihre Stärke spielen sie dann aus, wenn man die Möglichkeit einbaut, für jeden Beitrag und jede Seite verschiedene Sidebars zu wählen. Individuelle Sidebar in WordPress

Warum sollte man verschiedene Sidebars nutzen?

Es gibt keinen Zwang mehrere Sidebars in WordPress zu nutzen. Bei manchen Seitentypen ist es sogar sinnvoll nur eine einzige Sidebar anzuzeigen. Wird die Webseite aber umfangreicher und beherbergt verschiedenste Thematiken oder Inhaltstypen, macht es oft Sinn weiter zu gehen. Beispielsweise kann man auf einer Unternehmens-Webseite pro Thematik unterschiedliche Sidebars mit der jeweiligen Dienstleistung zu dieser Thematik nutzen. Auch Produkte können passend zum Inhalt deutlich gezielter gewählt werden, wenn man nicht nur eine Sidebar standardmäßig anzeigt.

Gibt es Plugins für die Nutzung verschiedener Sidebars?

Michael Boenigk hat in einem Artikel beschrieben, mit welchen Plugins man die Sidebar effektiver nutzen kann. Wer lieber ein Plugin nutzen möchte, sollte sich diesen Artikel genauer ansehen. Zu empfehlen ist auf jeden Fall das Plugin Display Widgets.

WordPress Sidebar ohne Plugin individualisieren

Meine Lösung geht einen etwas anderen Weg als die vom Kollegen Michael Boenigk beschriebenen Plugins. Bei der folgenden Variante werden beliebig viele Sidebars definiert, welche dann mit einem Benutzerdefinierten Feld jeder Seite oder jedem Beitrag zugeordnet werden können. In der Regel reicht diese Variante aus. Noch weiterzugehen ist meiner Ansicht nach nur selten nötig.

Neue Sidebar in WordPress Themes anlegen

In der Datei functions.php erstellt man folgenden Eintrag für eine neue Sidebar:

<?php
if (function_exists('register_sidebar')) {
register_sidebar(array(
'name' => 'Neue Sidebar',
'id' => 'sidebar-banane',
'description' => 'Widgets der Sidebar Banane',
'before_widget' => '<div class="box">',
'after_widget' => '</div>',
'before_title' => '<div class="sidebartitle">',
'after_title' => '</div>'
));}
?>

Individuelle Sidebar in das Theme einbauen

Je nachdem ob man die Sidebar über eine sidebar.php Datei einbaut oder aber direkt in einer Datei wie der single.php oder index.php, fügt man in diesen Dateien den folgenden Code ein, um die Sidebar aufzurufen.

<?php
if(get_post_meta($post->ID, 'sidebar', true)){
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar-'.get_post_meta($post->ID, 'sidebar', true)) ) :
endif;
}else{
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar-standard') ) :
endif;
}
?>

Zuerst wird geprüft, ob zu dem aufgerufenen Inhalt ein Benutzerdefiniertes Feld mit dem Namen „Sidebar“ existiert. Wenn nein, wird die Standard-Sidebar aufgerufen (Achtung, diese muss auch mit dem Namen „sidebar-standard“ in der functions.php angelegt sein). Wenn es das Feld gibt, wird die Sidebar mit diesem Namen ausgegeben.

Benutzerdefinierte Felder in WordPress aktivieren

Viele finden die Benutzerdefinierten Felder in WordPress gar nicht: Benutzerdefinierte Felder aktivieren Zuallererst muss in der Editoransicht im Backend von WordPress die Funktionalität für Benutzerdefinierte Felder aktiviert werden. Dafür erstellt man z.B. einen neuen Beitrag und klickt oben rechts auf „Optionen“. Im aufklappenden Menü aktiviert man die Benutzerdefinierten Felder. Diese erscheinen dann unter dem Editor.

Im neuen Artikel wird dann ein neues Benutzerdefiniertes Feld mit dem Namen „Sidebar“ erstellt und als Wert der Namenszusatz der Sidebar angegeben. In diesem Beispiel ist es der Namenszusatz „banane“ equivalent zur erstellten Sidebar (siehe oben). Individuelle Sidebar zuweisen Das war’s auch schon:  Einfach benutzerdefiniertes Feld mit dem Namen „sidebar“ erstellen und dann den Namen der Sidebar angeben. Zuvor die Sidebar über die Datei functions.php erstellen. Zum Schluß die Sidebar im genutzten Theme ausgeben.

Wrong language? You can find the translated article here:
WordPress: Adding sidebars per page or post

9 Kommentare

  1. Aaron sagt:

    Vielen Dank für dein Tutorial, konnte es etwas modifiziert in die Tat umsetzen!

    Mein Ziel war es unter die Standard-Sidebar eine zweite zu bekommen, falls es ein ausgefülltes Benutzerdefiniertes Feld gibt. Allerdings hat get_post_meta(…) keinen Wert geliefert sobald ich zuvor schon die Standard-Sidebar geladen hatte.
    Lösung des Problems war nun erst get_post_meta(…) in eine Variable zu speichern, dann die Standard-Sidebar laden und dann mit Hilfe der Variable die zweite zu laden.

    Vielleicht hilft das ja jemandem, oder du hast sogar eine Antwort parat warum das passiert?

    Viele Grüße

  2. Guter Artikel!

    Aber anhand dieses Artikels bin ich auf eine einfachere Lösung gestoßen:

    Lediglich im Theme, wo die Sidebar-Inhalte sein sollen

    ID, ’sidebarName5′,true)?>

    einfügen und dann kann von jeder Seite mittels dem benutzerdefinierten Feld ’sidebarName5′ die Inhalte eingefügt werden. D.h. ohne functions.php & co.

    Leider geht das auch nicht mit einem WYSIWYG-Editor… :/

  3. Simon sagt:

    Hi, schön geschriebener Artikel, aber leider funktioniert es nicht so wie es soll ;-/ Habe die Sidebar in der functions.php erstellt, die sind auch im Widget Bereich da. Wenn ich aber den Code für die Abfrage in die page.php oder single.php schreibe kommt folgender Fehler beim Aufruf:

    Parse error: syntax error, unexpected T_ENDIF in /Applications/XAMPP/xamppfiles/htdocs/sguener/wp-content/themes/waipoua/page.php on line 25

    In der Zeile 25 steht: endif;

    Vielleicht gibt es eine Lösung, würde mich freuen 🙂

    Viele Grüße,
    Simon

    • Hmm Simon, sieht so aus, als hätte ich noch einen Syntaxfehler gehabt. Ich hatte in der Zeile

      if ( !function_exists(‚dynamic_sidebar‘) || !dynamic_sidebar(’sidebar-‚.get_post_meta($post->ID, ’sidebar‘, true)) ) :

      noch den Doppelpunkt am Ende vergessen. Vielleicht wars das ja…

      • Simon sagt:

        Hi René,

        Vielen Dank, das war das Problem jetzt funktioniert es. Was aber noch nicht passt 😉 Wenn ich jetzt meinem letzten Artikel eine andere Sidebar zuweise, dann wird auch auf der Hauptseite die Sidebar die ich dem letzten Artikel zugewiesen habe angezeigt. Gibt es dafür auch noch eine Lösung? 🙂 Sonst ist alles Tip Top

        Viele Grüße,
        Simon

        • Das liegt daran, dass WordPress die Einstellungen oder Benutzerdefinierten Felder des letzten Artikels als Basis hernimmt (sieht man auch, wenn man die Kategorie ausliest). Da hilft wohl nur, in der index.php des Themes zu programmieren, dass eine fixe Sidebar für die Startseite verwendet wird, wenn man sich auf dieser befindet.

          Hat man eine category.php und eine tag.php und eine archive.php, kann man auch direkt in der index.php die richtige Sidebar angeben. In den anderen Theme-Files macht man es dann wieder dynamisch.

  4. Angelika sagt:

    Also je nach dem wie die Plugins programmiert sind können sie die Seite ja verlangsamen. Trotzdem können diese Plugins meistens mehr wie jeder der von programmieren kaum Ahnung hat. Und obwohl ich programmieren kann bleibe ich lieber bei den Plugins der bequemlichkeit wegen 🙂

    Wer sich gerne die Mühe macht von Hand Sidebars zu machen kann das gerne aber ob es die Mühe wert ist, ist fragwürdig.

    • Hallo Angelika,

      du hast natürlich Recht, dass man hier immer abwägen muss und entscheiden muss, was man leisten kann oder möchte.

      Aber sobald es darum geht ein leichtes System zu erhalten oder zurückzugewinnen, ist es immer ein Vorteil, wenn man von Plugins Abstand nehmen kann. Es ist auch immer eine Security-Geschichte. Je mehr Plugins, desto mehr Einfallstore.

  5. Kirsten sagt:

    Danke René für diesen Artikel! Eine elegante Lösung und dazu noch sehr schön erklärt.

Kommentar schreiben

* Notwendige Angaben

Netzgänger Webdesign | Schlehenweg 7 in Büchenbach | Bayern
Telefon: 0151/27051457 |
↑ oben
Inhalt