Dans le personnaliseur, chaque fois que j'ajoute un nouveau widget (mais avant d'enregistrer/publier les modifications), j'aimerais obtenir le nombre de widgets dans cette zone de la barre latérale.
Une fois que les modifications ont été enregistrées et que les widgets sont enregistrés dans la base de données, je peux utiliser le wp_get_sidebars_widgets
(appelé dans le crochet init
, qui enregistre mes widgets) pour compter tous les widgets de chaque zone de la barre latérale.
J'ai jeté un coup d'œil aux objets wp.customize.Widgets
et wp.customize.WidgetCustomizerPreview
et ils ne donnent pas l'impression qu'ils me donneront ce dont j'ai besoin. Où ces informations sont-elles sauvegardées dans le SC?
Vous pouvez obtenir la liste des widgets dans une barre latérale via:
wp.customize('sidebars_widgets[sidebar-1]').get()
Ceci est une liste des ID des widgets. Le sidebars_widgets[sidebar-1]
est l'ID de paramètre pour la barre latérale. Remplacez sidebar-1
par l'ID de votre barre latérale.
Donc, pour obtenir le compte, il suffit de:
wp.customize('sidebars_widgets[sidebar-1]').get().length
Si vous souhaitez écouter lorsqu'un widget est ajouté ou supprimé à une barre latérale, vous pouvez bind
à setting
pour écouter les modifications, comme ceci:
wp.customize( 'sidebars_widgets[sidebar-1]', function( sidebarSetting ) {
sidebarSetting.bind( function( newWidgetIds, oldWidgetIds ) {
console.info( {
added: _.difference( newWidgetIds, oldWidgetIds ),
removed: _.difference( oldWidgetIds, newWidgetIds )
} );
} )
} );