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!
Honte à moi, j’ai pas encore testé wordpress 2.5. Celà dit ton article me mets l’eau à la bouche 🙂
@jbj > c’est vraiment à essayer : même si je ne trouvais pas de gros défauts avant, cette nouvelle interface admin est vraiment mieux pensée. Sans compter les petites améliorations par ci par là 🙂
Moi sa ne marche pas sa me marque » Parse error: syntax error, unexpected T_STRING, expecting ‘)’ » et je n’arrive pas a régler le problème peut on m’aidé? Merci par avance.
@Guigui > En fait, ça vient des guillemets qui sont transformés par WordPress lors du copié-collé du code. Il faut donc remplacer les guillemets simples obliques par des guillemets simples droits (Maj+F4)
// A mettre dans votre template là où vous voulez déclarer une WAR
ok, mais c quoi mon « template » et accessoirement à pat la fait que c’est une guerre, « WAR » quésako dans le contexte ?
Pour le moment j’ai mis le code qui va bien dans functions.php…. mais évidemment, après avoir déplacer/coller mon widget de « Login » dans « header au niveau des widgets (WP-2.8), le widget ne s’affiche pas.
merci pour des compléments d’infos et désolé d’être si débutant avec WP; merci aussi pour le tuto.
Un super tuto, ça fonctionne parfaitement. Merci.
Bonjour,
Merci beaucoup pour ce tuto.
je n’ai pas testé sur WP3, ce code est-il compatible avec les versions supérieures à WP2.5?
Cordialement,
Jean Michel