web-dev-qa-db-fra.com

Comment déterminer le nombre de widgets contenus dans une barre latérale via le personnaliseur JS

J'essaie d'accéder à une zone de widget dans le personnaliseur via JS dans le but de compter le nombre de widgets dans la section.

Je suis en mesure d'accéder à certaines informations avec le code ci-dessous mais je ne suis pas tout à fait là.

wp.customize.section( 'sidebar-widgets-sidebar-1', function( section ) {
    console.info( section  );
});
1
Welcher

Tandis que vous pouvez consulter les instances WidgetControl contenues dans une SidebarSection, il est préférable de regarder plutôt la setting sous-jacente qui répertorie les widgets contenus dans de la barre latérale. Alors fais quelque chose comme ça:

wp.customize( 'sidebars_widgets[sidebar-1]', function( sidebarSetting ) {
    console.info( sidebarSetting.get().length );
} );

Alternativement, avec une fonction réutilisable:

/**
 * Get the count of widgets in a given sidebar.
 * 
 * @param {string} sidebarId Sidebar ID.
 * @returns {jQuery.promise} Resolving with the number of widgets in the sidebar.
 */
function getSidebarWidgetCount( sidebarId ) {
    var deferred = jQuery.Deferred();
    wp.customize( 'sidebars_widgets[' + sidebarId + ']', function( sidebarSetting ) {
        deferred.resolve( sidebarSetting.get().length );
    } );
    return deferred.promise();
}

Usage:

getSidebarWidgetCount( 'sidebar-1' ).done( function( count ){
    console.info( count );
} );
2
Weston Ruter