Individuelle Sidebars sind ein wunderbares Mittel, diese mit perfekt auf die jeweilige Kategorie abgestimmten Infos oder Werbemitteln zu füllen. Welche Möglichkeiten ihr habt, individuelle Sidebars in WordPress zu nutzen, erklären wir euch in diesem Artikel.
Verschiedene Sidebars in WordPress: die Möglichkeiten
Ihr habt grundlegend zwei verschiedene Möglichkeiten, auf Posts und Seiten unterschiedliche Sidebars anzeigen zu lassen.
- via Plugin
- ohne Plugin
Für welche Option ihr euch entscheidet ist egal, denn wir erklären euch beide. Mit Plugins geht es meist schneller und einfacher. Ohne Plugin spart ihr euch hingegen wieder eine Erweiterung, die sich möglicherweise schlecht auf die Performance auswirkt.
Plugin für Custom Sidebars
Ein beliebtes Plugin ist das Custom Sidebars von WPMU DEV. Nach der Installation des Plugins könnt ihr im WordPress Dashboard unter Design → Widgets neue Sidebars erstellen und diese zuweisen. An welchen Stellen die Sidebar ausgespielt werden soll, legt ihr mit einem Klick auf Anzeigeoptionen fest, nachdem ihr die Sidebar erstellt habt. In folgendem Video wird dieser Ablauf ziemlich gut erklärt:
Außerdem könnt ihr in jedem einzelnen Post und auf jeder einzelnen Seite die Sidebar individuell festlegen. Diese Einstellung “überschreibt” dann für den spezifischen Post die Einstellungen, die ihr für die jeweilige Kategorie im Widget-Menü festgelegt habt.
Zum Plugin: Custom Sidebars – Dynamic Widget Area Manager
Individuelle Sidebars ohne Plugin erstellen
Um individuelle Sidebars ohne Plugin zu erstellen, müsst ihr zuerst einmal in die functions.php rein. Hinterlegt dort folgenden Code:
<?php
if (function_exists('register_sidebar')) {
register_sidebar(array(
'name' => 'Test Sidebar',
'id' => 'sidebar-test',
'description' => 'Widgets der Test Sidebar',
'before_widget' => '<div class="box">',
'after_widget' => '</div>',
'before_title' => '<div class="sidebartitle">',
'after_title' => '</div>'
));}
?>
Code-Sprache: HTML, XML (xml)
function_exists('register_sidebar')
: Diese Überprüfung stellt sicher, dass die Funktion register_sidebar
existiert, bevor sie aufgerufen wird. Dies ist eine gute Praxis, insbesondere bei älteren WordPress-Versionen oder wenn man sicherstellen möchte, dass das Theme kompatibel bleibt.register_sidebar(array(...))
: Diese Funktion wird verwendet, um eine neue Sidebar zu registrieren. Die Funktion wird mit einem Array von Argumenten aufgerufen, die die Sidebar konfigurieren.'name' => 'Test Sidebar'
: Legt den Namen der Sidebar fest, der im WordPress Admin angezeigt wird.'id' => 'sidebar-test'
: Legt die ID der Sidebar fest, die für die eindeutige Identifizierung verwendet wird. Dies ist besonders wichtig, wenn du mehrere Sidebars hast.'description' => 'Widgets der Test Sidebar'
: Bietet eine Beschreibung für die Sidebar, die im Admin-Bereich angezeigt wird.'before_widget' => '<div class="box">', 'after_widget' => '</div>'
: Definiert das HTML, das vor und nach jedem Widget in der Sidebar eingefügt wird.'before_title' => '<div class="sidebartitle">', 'after_title' => '</div>'
: Definiert das HTML, das vor und nach jedem Widget-Titel in der Sidebar eingefügt wird.
Nun könnt ihr die Sidebar entweder über eine sidebar.php oder direkt in die single.php oder index.php eures Themes einflechten. Dafür fügt ihr einfach folgenden Code in die jeweilige Datei ein:
<?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;
}
?>
Code-Sprache: HTML, XML (xml)
if(get_post_meta($post->ID, 'sidebar', true))
: Diese Bedingung überprüft, ob es eine benutzerdefinierte Feld (Custom Field) namens ‘sidebar’ für den aktuellen Beitrag gibt.if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar-'.get_post_meta($post->ID, 'sidebar', true)) ) :
: Wenn das benutzerdefinierte Feld vorhanden ist, wird überprüft, ob die Funktion dynamic_sidebar
existiert und dann wird versucht, eine Sidebar mit der ID ‘sidebar-‘ gefolgt vom Wert des benutzerdefinierten Feldes anzuzeigen.endif;
: Schließt die vorherige Bedingung ab.else
: Wenn es kein benutzerdefiniertes Feld ‘sidebar’ gibt, wird der Code im else
-Block ausgeführt.if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar-standard') ) :
: Hier wird überprüft, ob die Funktion dynamic_sidebar
existiert und dann wird versucht, eine Sidebar mit der ID ‘sidebar-standard’ anzuzeigen.endif;
: Schließt die zweite Bedingung ab.
(Bei den Codeschnipseln haben wir uns bei https://www.netz-gaenger.de/blog/wordpress-tutorials/wordpress-sidebar-pro-seite-oder-beitrag-wahlen/ bedient.)
Durch diesen Code wird nun immer geprüft, ob bei der jeweiligen Seite bzw. dem jeweiligen Post ein benutzerdefiniertes Feld existiert, das den Titel “Sidebar” trägt. Ist dies nicht der Fall, wird die Standard-Sidebar ausgespielt. Habt ihr ein benutzerdefiniertes Feld für den/die Post/Page angelegt, wird hingegen die individuelle Sidebar angezeigt, die ihr zuvor in der functions.php angelegt habt.
Erstellt ihr einen neuen Beitrag oder eine neue Seite müsst ihr jetzt erst einmal die benutzerdefinierten Felder aktivieren. Das geht über einen Klick auf “Ansicht anpassen” (ganz oben rechts) und ein gesetztes Häkchen bei “Benutzerdefinierte Felder”.
Wichtig: Nutzt ihr den Gutenberg Editor, müsst ihr momentan noch auf folgendes Plugin zurückgreifen, um benutzerdefinierte Felder in Posts/Pages hinzuzufügen. Der neue Editor sieht diese nämlich nicht mehr vor.
Erstellt nun ein neue benutzerdefiniertes Feld mit dem Namen “sidebar”. Als Wert hinterlegt ihr den Namen der Sidebar, den ihr auf dieser Seite oder in diesem Post anzeigen lassen wollt. In unserem Beispiel haben wir dieser den Namen “Test Sidebar” verliehen.
Lasst uns wissen, ob ihr individuelle Sidebars nutzt und welche Variante ihr für die Integration verwendet. Hinterlasst dazu gerne ein Kommentar.