WordPress-Blog

Tutorial: WordPress-Themes widgetfähig machen

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') &amp;&amp; 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') &amp;&amp; dynamic_sidebar('footer')) : else : ?>

// Hier kommen Inhalte hin, die nur angezeigt werden, wenn Widgets nicht genutzt werden

<?php endif; ?>
SimonTutorial: WordPress-Themes widgetfähig machen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.