如何通过定制器JS确定侧边栏中包含的微件数量

时间:2017-02-15 作者:Welcher

我试图通过JS访问定制器中的一个小部件区域,目的是统计该部分中的小部件数量。

我可以使用下面的代码访问一些信息,但不太清楚。

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

1 个回复
最合适的回答,由SO网友:Weston Ruter 整理而成

而您可以查看WidgetControl 包含在SidebarSection, 相反,最好是查看底层setting 它列出了侧栏中包含的小部件。所以请这样做:

wp.customize( \'sidebars_widgets[sidebar-1]\', function( sidebarSetting ) {
    console.info( sidebarSetting.get().length );
} );
或者,使用可重用功能:

/**
 * 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();
}
用法:

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