Avant que les blocs ne permettent d’insérer librement du contenu presque partout, les thèmes classiques exposaient des emplacements dédiés et prédéfinis pour accueillir des widgets : ce sont les zones de widgets, encore appelées barres latérales dans la terminologie historique de WordPress.
Déclaration côté thème
Un thème déclare ses zones de widgets dans functions.php avec la fonction register_sidebar(), en précisant un identifiant, un nom affiché et le balisage HTML qui encadrera chaque widget qui y sera placé. La zone déclarée apparaît ensuite dans « Apparence > Widgets », où l’utilisateur peut y glisser des blocs ou d’anciens widgets classiques.
Exemple de déclaration
register_sidebar( array(
'name' => __( 'Barre latérale principale', 'mon-theme' ),
'id' => 'barre-laterale-1',
'before_widget' => '<div class="widget %2$s">',
'after_widget' => '</div>',
) );
Le thème doit ensuite afficher cette zone dans son gabarit via dynamic_sidebar( 'barre-laterale-1' ) pour qu’elle soit réellement visible sur le site.
À ne pas confondre avec
- Un emplacement de menu n’accepte qu’un menu de navigation, alors qu’une zone de widgets accepte tout widget ou bloc que l’utilisateur souhaite y placer.
- Les thèmes blocs n’utilisent généralement plus les zones de widgets classiques : la même flexibilité passe directement par l’insertion de blocs dans les parties de gabarit d’en-tête ou de pied de page.
- Une zone de widgets déclarée mais jamais appelée par
dynamic_sidebar()dans un gabarit reste invisible sur le site, même si des widgets y ont été ajoutés depuis l’administration.