Bereits seit Version 2.0 unterstützt WordPress die kleinen Helferlein Widgets, die in Sidebars oder Footern von WordPress-Themes zum Einsatz kommen. Dazu muss das Theme allerdings widgetfähig sein — was in weniger als fünf Minuten erledigt ist. So funkioniert’s:
1. Widget-Bereich in der functions.php registrieren
WordPress muss wissen, ob es neben der Standard-Sidebar (sidebar.php) noch weitere Seitenleisten gibt. Dies geht mit folgendem Code-Schnipsel, der in die functions.php des Themes eingefügt wird. Existiert eine Datei dieses Namens nicht, muss sie erstellt werden und in das Theme-Verzeichnis kopiert werden (/wp-content-themes/name-des-themes/).
if (function_exists('register_sidebar')) { register_sidebar(array( 'name' => 'Sidebar', 'id' => 'sidebar', 'description' => 'Dies ist der Widget-Bereich der Sidebar', 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3>', 'after_title' => '</h3>' )); }
Angaben wie Name, Description, before_widget etc. sind optional, sollten aber dennoch gemacht werden — spätestens wenn mehrere Widget-Bereiche definiert werden kann es sonst zu Problemen kommen und man verliert die Übersicht. Wichtig ist eine einzigartige Bezeichnung des Widget-Bereichs (ID). Im Beispiel ist die Bezeichnung schlicht „sidebar“.
Mit if function_exists wird sichergestellt, dass die Sidebar nur dann registriert wird, wenn diese Funktion in WP auch existiert.
2. Widget-Bereich im Template aufrufen
Nachdem die Widget-Sidebar in der functions.php registriert wurde, muss nun nur noch festgelegt werden, wo die Inhalte im Theme dargestellt werden sollen. Im Normalfall geschieht dies in der sidebar.php:
<?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('sidebar')) : else : ?> // Hier kommen Inhalte hin, die nur angezeigt werden, wenn Widgets nicht genutzt werden <?php endif; ?>
Was macht der Code? Zunächst wird überprüft, ob es eine Widget-Sidebar mit der ID „sidebar“ gibt. Falls ja wird der Widget-Inhalt ausgegeben. Falls nicht werden Inhalte ausgegeben, die nicht über Widgets definiert sind (also die Standard-Sidebar).
Das war es schon! Mit diesen zwei kleinen Schritten ist das Theme widgetfähig. Falls noch mehr gewünscht ist…
3. (Optional) Weitere Widget-Bereiche in der functions.php registrieren
Manchmal reicht ein einzelner Widget-Bereich nicht aus, z.B. wenn man Widgets nicht nur in der Sidebar, sondern auch im Footer nutzen möchte. Weitere Widget-Bereiche lassen sich ganz leicht registrieren, wie oben bereits beschrieben:
if (function_exists('register_sidebar')) { register_sidebar(array( 'name' => 'Sidebar', 'id' => 'sidebar', 'description' => 'Dies ist der Widget-Bereich der Sidebar', 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3>', 'after_title' => '</h3>' )); register_sidebar(array( 'name' => 'Footer', 'id' => 'footer', 'description' => 'Dies ist der Widget-Bereich des Footers', 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3>', 'after_title' => '</h3>' )); }
Neben dem ersten Widget-Bereich für die Sidebar wurde nun ein zweiter für den Footer definiert. Dieser lässt sich ebenso in ein Template einfügen (footer.php):
<?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('footer')) : else : ?> // Hier kommen Inhalte hin, die nur angezeigt werden, wenn Widgets nicht genutzt werden <?php endif; ?>
Schreibe einen Kommentar