Les widgets dans WordPress 2.5 avec widgétisator ;)

La mise-à-jour vers WordPress 2.5 ne se limite pas seulement à des améliorations ergonomiques et cosmétiques au niveau de l’interface d’administration. Prenons les widgets : la page elle-même est profondément remaniée, et toute la partie destinée au choix du nombre de widgets (texte, RSS, catégorie, etc.) disparait, puisque avec cette version, le nombre de certains widgets n’est plus limité. Et comme vous êtes sympa, je vous donne les éléments nécessaires pour nommer et personnaliser vos zones widgétisables dans votre template WordPress.

L’est passé où, le glissé-déposé ?

Conséquence directe sur l’interface, il n’est plus possible d’utiliser le glissé-déposé des widgets vers les différentes « sidebars ». En effet, cette fonction n’était déjà pas très pratique lorsqu’on déclarait quatre zones widgétisables (improprement appelées « sidebars »), alors vous imaginez le dawa avec plus 😉

A la place, nous avons une interface robuste avec à gauche, les différents widgets disponibles, et à droite, les zones widgétisables et les widgets associés, avec les options disponibles pour chacun d’eux.

A noter qu’il est préférable de bien nommer vos zones widgétisables pour vous y retrouver car le choix de ces dernières s’effectue désormais au dans un menu select.

Modifier l’intitulé des zones widgétisables

Dans un précédent article sur les widgets dans WordPress, je n’étais pas parvenu à modifier l’intitulé des zones widgétisables, cette fois, c’est réglé : à la place de sidebar1, sidebar2, etc. voici le code à mettre dans le fichier functions.php pour donner un nom explicite à chaque zone, avec en prime, la possibilité de spécifier pour chacune les balises HTML enveloppantes qui vont bien :

Widgétisator

<?php
// A mettre dans le fichier functions.php de votre thème
if ( function_exists('register_sidebar') )
register_sidebar(array('name'=>'header',
'before_widget' => '<p id="%1$s" class="widget-header %2$s">',
'after_widget' => '</p>',
'before_title' => '<h3 class="widgettitle">',
'after_title' => '</h3>',
));
register_sidebar(array('name'=>'sidebar',
'before_widget' => '<li id="%1$s" class="widget-sidebar %2$s">',
'after_widget' => '</li>',
'before_title' => '<h3 class="widgettitle">',
'after_title' => '</h3>',
));
register_sidebar(array('name'=>'content',
'before_widget' => '<div id="%1$s" class="widget-content %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widgettitle">',
'after_title' => '</h3>',
));
register_sidebar(array('name'=>'footer',
'before_widget' => '<div id="%1$s" class="widget-footer %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widgettitle">',
'after_title' => '</h3>',
));
?>

L’idée est de déclarer individuellement chaque zone, de manière à controler :

  • le nom de la zone (header, sidebar, content, footer),
  • la balise html servant à encadrer le code fournit par le widget avec une class CSS spécifique (widget-header, widget-sidebar, widget-content, widget-footer),
  • la balise de titre avec sa classe CSS spécifique (widgettitle).

Sinon, il reste toujours la possibilité de déclarer plusieurs zones d’un seul coup avec le code :

<?php
if ( function_exists('register_sidebar') )
    $widgetWrap = array(
        'before_widget' => '<div id="%1$s" class="widget %2$s">',
        'after_widget' => '</div>',
        'before_title' => '<h2 class="widgettitle">',
        'after_title' => '</h2>',
    );
    register_sidebars(4, $widgetWrap);
?>

Dans les deux cas, pour terminer, il est nécessaire de définir votre zone widgétisable dans votre template à l’aide des lignes suivantes :

<?php
// A mettre dans votre template là où vous voulez déclarer une WAR
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('header') ) : ?>

/*
Placez ici le code qui doit s'afficher si la zone
n'est pas remplie avec des widgets -- facultatif
*/

<?php endif; ?>

En bref

Vous l’aurez compris, je suis conquis par cette nouvelle version de WordPress, et vous n’avez pas fini d’en entendre parler 😉 Pour avoir d’autres informations sur cette version, n’hésitez pas à faire un tour sur WordPress francophone, chez nicolargo ou encore chez Here With Me.

Stay tuned!