Les widgets, bien qu'améliorer depuis WordPress 2.8 (avec la nouvelle classe PHP et la multiplicité de ces derniers), sont toujours une source de frustration pour les utilisateurs.
Par exemple, n'ajouter un widget que sur une certaine page reste encore mission impossible ou presque !
Ici, je vais vous montrer avec 2 bouts de code, comment on peut générer automatiquement une barre de sidebar pour chaque page de votre blog/site sous WordPress, sans oublier une sidebar par défaut pour le reste du blog et les pages n'ayant aucun widget spécifique !
Étape 1 : Enregistrement automatique des nouvelles sidebars
Ici, on procède en 2 étapes,dans un premier temps on enregistre la sidebar par défaut, puis on récupère la liste complète des pages disponibles de votre blog via la fonction get_pages() et on fait une boucle dessus pour enregistrer chaque sidebar.
<?php
if ( function_exists('register_sidebar') ) {
// Default sidebar
register_sidebar(array(
'id' => "sidebar-default",
'name' => 'Sidebar par défaut',
'before_widget' => '<li id="%1$s">',
'after_widget' => '</div></li>',
'before_title' => '<h2>',
'after_title' => '</h2><div>',
));
// One sidebar by page
$_pages = get_pages();
foreach( (array) $_pages as $_page ) {
register_sidebar(array(
'id' => "sidebar-$_page->ID",
'name' => esc_html($_page->post_title),
'before_widget' => '<li id="%1$s">',
'after_widget' => '</div></li>',
'before_title' => '<h2>',
'after_title' => '</h2><div>',
));
}
unset($_pages, $_page);
wp_reset_query();
}
?>
Étape 2 : Appel de la sidebar depuis votre thème
(Code généralement à placer dans le fichier sidebar.php de votre thème)
Ici il ne faut pas oublier d'ajouter la variable globale $wp_query, grâce à cette dernière nous récupérons l'ID de l'objet actuellement chargé, et je vérifie que je suis bien sur une page et que la sidebar est utilisée. (autrement dit qu'elle contient au moins un widget). Si ça n'est pas le cas, je charge la sidebar par défaut.
<?php
global $wp_query;
if ( function_exists('dynamic_sidebar') ) {
if ( is_page() && is_active_sidebar( 'sidebar-' . $wp_query->queried_object_id ) ) {
dynamic_sidebar( 'sidebar-' . $wp_query->queried_object_id );
} else {
dynamic_sidebar( 'sidebar-default' );
}
}
?>
Vous pouvez retrouver l'intégralité du code depuis cette page pastebin
Chaque été, Google organise les « Google Summer of Code » ! Google sélectionne des centaines de projets open source, et permet aux responsables de cesdits projets de recruter le temps d’un été des étudiants en informatique !
Cherchant à faire des sauvegardes régulières de mon outil de travail, j’ai décidé de brancher mon petit serveur Windows à mon MacBook Pro…