Ganz einfach mehrere WordPress Sidebars erstellen

Von am 2014-01-22

Die WordPress Sidebars sind eine tolle Sache. Man kann sie im eigenen Template überall positionieren und sie sind die beste Möglichkeit, Widgets einzubinden. Wenn man nun die Standard Sidebars bearbeiten und über ein Template beispielsweise HTML5 Konform machen möchte, will man ja nicht immer für jede Sidebar die gleichen Parameter neu vergeben (don’t repeat yourself).

Deshalb möchte ich heute mal eine Variante aufzeigen, mit der man recht einfach mehrere Sidebars erzeugen kann.

Sidebar im Template positionieren

Zuerst erstellen wir uns eine einfache index.php Datei für unser Template. In dem Template werden dann die Sidebars dort eingestellt, wo wir sie später nutzen wollen. In unserem Beispiel erstellen wir ein 3-spaltiges Layout mit je zwei Sidebars links, Content in der Mitte und zwei weiteren Sidebars rechts.

[php]<?php
get_header();
if(is_active_sidebar(1)):
?>
<aside class="sidebar">
<?php dynamic_sidebar( ‚custom_sidebar-1‘ ); ?>
</aside>
<?php
endif;
if(is_active_sidebar(2)):
?>
<aside class="sidebar">
<?php dynamic_sidebar(‚custom_sidebar-2‘); ?>
</aside>
<?php
endif;
?>
<section id="content">
<?php
if(have_posts()) :
while(have_posts()):
the_post();
get_template_part(‚content‘, get_post_format());
endwhile;
else :
?>
<article>
<h3><?php _e(‚Derzeit sind keine Beiträge vorhanden‘); ?></h3>
</article>
<?php
endif;
?>
</section><!– #content –>
<?php
if(is_active_sidebar(3)):
?>
<aside class="sidebar">
<?php dynamic_sidebar( ‚custom_sidebar-3‘ ); ?>
</aside>
<?php
endif;
if(is_active_sidebar(4)):
?>
<aside class="sidebar">
<?php dynamic_sidebar( ‚custom_sidebar-4‘ ); ?>
</aside>
<?php
endif;
get_footer();
?>[/php]

Somit haben wir unser Layout definiert. mit dynamic_sidebar() wird die Sidebar angezeigt, wenn sie existiert und mit einem Widget befüllt ist. Da wir jedoch die Sidebar noch bearbeiten wollen, müssen wir ebenfalls eine functions.php Datei anlegen um der Sidebar entsprechende HTML Tags zu geben.

Die Sidebar in der functions.php definieren

Unsere Sidebar soll Widgets darstellen. Diese sollen von <section>-Tags umschlossen werden. Da jede Sidebar auch einen Titel hat, soll dieser mit einer <h3>-Überschrift versehen werden. Dazu schreiben wir uns eine Funktion, die diese Argumente für jede Sidebar vergibt. So wiederholen wir uns nicht jedes Mal.

[php]function deralex_add_sidebar_args($name) {
$sidebar_args = array(
’name‘ => $name,
‚before_widget‘ => ‚<section>‘,
‚after_widget‘ => ‚</section>‘,
‚before_title‘ => ‚<h3>‘,
‚after_title‘ => ‚</h3>‘
);
return $sidebar_args;
}[/php]

Damit die Sidebars auch angezeigt und genutzt werden können, müssen wir sie noch „registrieren“. Dazu nutzen wir die WordPress Funktion register_sidebars().

[php]register_sidebars(4, deralex_add_sidebar_args(‚custom_sidebar-%d‘));[/php]

Die beiden Argumente der WordPress-Funktion register_sidebars sind einmal die Anzahl an Sidebars und einmal die Sidebar-spezifischen Argumente. Meine Funktion deralex_add_sidebar_args hat das entsprechende Array als Rückgabewert, sodass ich die Funktion als 2. Argument in register_sidebars nutzen kann. Mit dem Namen custom_sidebar-%d wird automatisch die passende Nummer an den Namen hinten angehängt. So rufe ich nur einmal register_sidebars auf und definiere nur einmal die Sidebar-Argumente. Ganz einfach, oder? 🙂 Wenn der Artikel gefällt, dann teilt ihn doch bitte. Über Kommentare freue ich mich auch.

Ein Kommentar

Schreibe einen Kommentar

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