在定制器窗格中访问默认小部件的控件

时间:2016-12-05 作者:LebCit

我正在尝试访问任何default 自定义程序窗格中的控件,not the preview !<所以我排了一个队testing.js a下的文件customize_controls_enqueue_scripts 操作
/** * Enqueue script for custom customize control. */ function custom_customize_enqueue() { wp_enqueue_script( \'testing\', get_template_directory_uri() . \'/assets/js/testing.js\', array( \'jquery\', \'customize-controls\' ), false, true ); } add_action( \'customize_controls_enqueue_scripts\', \'custom_customize_enqueue\' );

在本测试中。js文件,如果我尝试访问控件的容器,如所示
alert(wp.customize.control(\'text_widget_color_setting\').container.length);
一切正常,警报结果为1,因此我正在通过DOM访问控件。

但如果我试图达到default 控件的容器,如so
alert(wp.customize.control(\'widget_search-2\').container.length);<我明白了Uncaught TypeError: Cannot read property \'container\' of undefined
我知道我没有定义/创建此default widget控件,但WP有,但此控件有id="customize-control-widget_search-2" ?!

让我抓狂的是,如果我尝试:
alert(wp.customize.section(\'sidebar-widgets-sidebar-1\').controls().length);
DOM可以在这个由WP创建的提要栏-1部分下看到所有默认小部件的控件!

提前感谢您的帮助。

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

您应该等待,直到保证创建控件为止。您应该使用延迟模式:

wp.customize.control(\'widget_search[2]\', function( control ) {
    // ...
    console.info( control.container );
    // ...
});
此外,小部件定制器控件的ID格式为widget_search[2]widget_search-2. 请注意与DOM元素ID的区别。

相关推荐

JQuery php请求返回一个奇怪的结果

我有一个奇怪的小故障发生在我身上,我不知道我是如何产生它的,或者它是否是正常的。我正在开发自己的插件,当一个足球队/足球队被输入到一个框中时,它会检查它是否已经在数据库中。以下是我的代码行add_action( \'admin_footer\', \'fws_teamcheck_javascript\' ); function fws_teamcheck_javascript() { ?> <script type="text/javascript">