web-dev-qa-db-fra.com

Où trouver la liste non enregistrée de widgets dans le personnaliseur?

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?

3
rugbert

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 )
        } );
    } )
} );
6
Weston Ruter