在Customizer中哪里可以获得未保存的小部件列表?

时间:2018-01-31 作者:rugbert

在customizer中,每当我添加一个新的小部件时(但在保存/发布更改之前),我都希望获得该侧边栏区域中小部件的数量。

保存更改并将小部件保存到DB后,我可以使用wp_get_sidebars_widgets (在init 钩子,它在那里注册我的小部件)来计算每个侧栏区域的所有小部件,

我看了一下wp.customize.Widgets 以及wp.customize.WidgetCustomizerPreview 对象,它们看起来不会满足我的需要。此信息在JS中的何处保存?

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

您可以通过以下方式在侧栏中获取小部件列表:

wp.customize(\'sidebars_widgets[sidebar-1]\').get()
这是小部件ID的列表。这个sidebars_widgets[sidebar-1] 是侧栏的设置ID。代替sidebar-1 使用侧边栏的ID。

因此,要获得计数,只需执行以下操作:

wp.customize(\'sidebars_widgets[sidebar-1]\').get().length
如果您想监听在侧栏中添加或删除小部件的时间,您可以bindsetting 要侦听更改,请执行以下操作:

wp.customize( \'sidebars_widgets[sidebar-1]\', function( sidebarSetting ) {
    sidebarSetting.bind( function( newWidgetIds, oldWidgetIds ) {
        console.info( {
            added: _.difference( newWidgetIds, oldWidgetIds ),
            removed: _.difference( oldWidgetIds, newWidgetIds )
        } );
    } )
} );

结束

相关推荐

Using add_filter() in Widgets

只需查询引用add_filter() 作用您可以在WordPress小部件类中使用此函数吗。Example我有一个带有动态创建代码的小部件,我想将其传递给插件中创建的另一个函数。这能实现吗?<?php /** * Display the actual Widget * * @param Array $args * @param Array $instance */ public function widget($args, $inst