En enregistrant ma barre latérale, je veux que chaque widget soit enveloppé dans <aside>
. Cela fonctionne très bien lorsque vous utilisez les widgets intégrés tels que Calendrier ou recherche . Cependant, lorsque j'ajoute des widgets que j'ai créés moi-même, la fermeture <aside>
ne reçoit pas de sortie. Par conséquent, je reçois une structure semblable à:
<widgets-area>
<custom-widget>
<custom-widget>
</custom-widget>
</custom-widget>
</widgets-area>
Quand cela devrait ressembler à:
<widgets-area>
<custom-widget>
</custom-widget>
<custom-widget>
</custom-widget>
</widgets-area>
register_sidebar
register_sidebar( array(
'name' => __( 'Sidebar', 'mysite' ),
'id' => 'sidebar-1',
'before_widget' => '<aside id="%1$s" class="widgets__widget widgets__widget--%2$s">',
'after_widget' => '</aside>',
'before_title' => '<h1 class="widgets__widget__title">',
'after_title' => '</h1>',
) );
Le code de mes widgets personnalisés inclut à la fois echo $args['before_widget']
et echo $args['after_widget']
qui, je suppose, est utilisé pour renvoyer en écho les codes "before_widget" et "after_widget" déclarés dans register_sidebar()
.
Pourquoi mes widgets personnalisés ne se ferment-ils pas correctement, alors que les widgets intégrés le sont? Qu'est-ce que je rate? Outre la structure, les widgets personnalisés fonctionnent correctement.
Il s’avère que j’ai écrasé la widget($args)
dans le widget. Par conséquent, le before_widget
est répercuté mais pas le after_widget
.
J'ai renommé la variable widget($args)
et toutes ses références, puis les plugins ont fonctionné comme prévu.