Avant l’arrivée de l’éditeur de blocs pour l’ensemble du site, il fallait déjà un moyen simple de composer une barre latérale ou un pied de page sans toucher aux fichiers PHP du thème : c’est le rôle historique de ce système, introduit dès WordPress 2.2.
Fonctionnement dans WordPress
Un thème déclare ses zones de widgets via register_sidebar(), généralement accroché au hook widgets_init. Chaque widget lui-même peut être une classe héritant de WP_Widget, pour un widget classique, ou depuis WordPress 5.8 un bloc classique intégré directement à l’écran « Widgets » de l’administration, unifiant l’expérience avec l’éditeur de site.
Exemple
register_sidebar( array(
'name' => 'Barre latérale principale',
'id' => 'sidebar-1',
'before_widget' => '<div class="widget">',
'after_widget' => '</div>',
) );
À ne pas confondre avec
La zone de widgets elle-même, qui est l’emplacement déclaré par le thème, distincte du widget qui y est placé ; ni avec un menu de navigation, autre type de contenu modulaire mais dédié spécifiquement aux liens de navigation plutôt qu’à du contenu libre.
Bon à savoir
Certains thèmes de bloc récents n’affichent plus l’écran classique « Widgets » du tout, la totalité des zones étant alors gérée directement comme des zones modifiables de l’éditeur de site, ce qui peut dérouter un intégrateur habitué à l’ancienne interface par glisser-déposer.
Un widget classique conserve ses propres réglages dans l’option widget_nom-de-la-classe, indépendamment de la structure générale des menus et des zones : deux instances du même widget sur deux zones différentes stockent chacune leur configuration séparément.