Eigene Widget-Area in WordPress anlegen

Manchmal ist es notwendig, im genutzten WordPress-Theme eigene Bereiche für Widgets anzulegen, denn die meisten Themes bieten nur die Standardbereich an, z.B. Sidebar, Footer usw. Will man aber zum Beispiel für unterschiedliche Inhaltsbereiche der Seite auch unterschiedliche Widgets nutzen, muss man das Theme erweitern, was dank der zahlreichen Erweiterungsmöglichkeiten von WordPress kein Problem ist.

1. Registrieren der Widget-Area in der functions.php

Jede Theme in WordPress hat eine eigene functions.php. Wenn man ein Theme eines Fremdanbieters nutzt, sollte man zuerst ein Child-Theme anlegen, damit die eigenen Änderungen nicht durch ein Update des Themes überschrieben werden.

Um einen eigenen Widgetbereich anzulegen, oder zu registrieren, nutzt man die Funktion register_sidebar, welche innerhalb des Action-Hooks „widgets_init“ aufgerufen wird.


function as_widgets_init()
{
register_sidebar( array(
'name' => __( 'Sidebar Blog', 'name-my-theme' ),
'id' => 'as-sidebar-blog',
'description' => __( 'Widgetarea im Blogbereich', 'name-my-theme' ),
'before_widget' => '<div>
‚,
‚after_widget‘ => ‚</div>‘,
‚before_title‘ => ‚<div><h5>‘,
‚after_title‘ => ‚</h5></div>‚,
) );
}
add_action( ‚widgets_init‘, ‚as_widgets_init‘ );

Wenn man mehrere Widgetbereiche anlegen will, muss man nun einfach die Funktion „register_sidebar“ mehrmals aufrufen. Wichtig dabei ist, dass die „id“ nicht doppelt verwendet wird.

Parameter der Funktion „register_sidebar“

name – Der Name der Widgetarea, erscheint im Adminbereich „Widgets“.
id – Eindeutige ID der Widgetarea, mit der diese im theme angesprochen werden kann.
description – Widgetarea-Beschreibung für den Adminbereich.
before_widget,
after-widget,
before-title,
after-title – Angabe von HTML-Elementen, mit deren Hilfe der Widgetbereich erstellt wird.

Wenn der Code in der function.php eingefügt ist, kann die Widgetarea nun im Admin unter Design->Widgets angesprochen werden.

2. Widgetbereich im Theme einbinden

Damit der Widgetbereich und die Widgets im Frontend angezeigt werden, muss im Theme an der entsprechenden Stelle die Funktion „dynamic_sidebar“ eingebunden werden.