カスタマイザで、新しいウィジェットを追加するときはいつでも(ただし、変更を保存または公開する前に)、そのサイドバー領域内のウィジェットの数を取得したいと思います。
変更が保存されてウィジェットがDBに保存されたら、wp_get_sidebars_widgets
(init
フックで呼び出され、そこでウィジェットが登録されます)を使用して、各サイドバー領域のすべてのウィジェットをカウントできます。
私はwp.customize.Widgets
オブジェクトとwp.customize.WidgetCustomizerPreview
オブジェクトを調べましたが、それらが私に必要なものを提供するようには見えません。この情報はJSのどこに保存されていますか?
あなたはサイドバーの中でウィジェットのリストを得ることができます:
wp.customize('sidebars_widgets[sidebar-1]').get()
これはウィジェットのIDのリストです。 sidebars_widgets[sidebar-1]
はサイドバーの設定IDです。 sidebar-1
をサイドバーのIDに置き換えます。
だからカウントを得るためにちょうどする:
wp.customize('sidebars_widgets[sidebar-1]').get().length
ウィジェットがサイドバーに追加または削除されたときに待機したい場合は、次のように変更を待機するためにbind
をsetting
に変更できます。
wp.customize( 'sidebars_widgets[sidebar-1]', function( sidebarSetting ) {
sidebarSetting.bind( function( newWidgetIds, oldWidgetIds ) {
console.info( {
added: _.difference( newWidgetIds, oldWidgetIds ),
removed: _.difference( oldWidgetIds, newWidgetIds )
} );
} )
} );