定制器:何时使用Customize_PREVIEW_INIT与Customize_Controls_EnQueue_Scrips

时间:2014-03-20 作者:N2Mystic

codex和Twenty14主题代码之间似乎存在一些冲突,关于哪个操作要挂钩以加载您的实时预览。js(例如:customizer.js)

在2144主题中,实时预览处理程序customizer。js,使用customize_preview_init:

function twentyfourteen_customize_preview_js() {
    wp_enqueue_script( \'twentyfourteen_customizer\', get_template_directory_uri() . \'/js/customizer.js\', array( \'customize-preview\' ), \'20131205\', true );
}
add_action( \'customize_preview_init\', \'twentyfourteen_customize_preview_js\' );
然而,在法典中this answer, 我们建议使用customize_controls_enqueue_scripts

3-创建一个连接到“customize\\u controls\\u enqueue\\u scripts”的操作,该操作将js文件排入队列

当我使用该方法排队时。js附加到父DOM(customizer控件窗口本身),而不是预览iframe(chrome开发预览中的“About”文档),如下面的屏幕截图所示。

enter image description here

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

正如名称本身所述,其中一个钩子指向自定义控件,另一个钩子指向自定义预览。它们是不一样的,事实上,你可以出于不同的目的同时使用它们。

如果您正在挂接JS代码以影响自定义程序中的控件,那么您应该使用customize_controls_enqueue_scripts.

如果您将JS代码挂接到预览框架中,并可能通过postMessage从控件接收事件,从而能够快速动态更改预览框架的内容,那么您可以使用customize_preview_init.

2014年实际上两者都使用。第一个用于向customizer中的自定义控件添加特色内容建议脚本。第二个用于预览框架中的所有postMessage代码。

具体来说,customize\\u preview\\u init挂钩是从wp_loaded 自定义程序is\\u preview()返回true,is\\u admin()返回false时的操作。。。因此,只有在预览窗口中,而不是在管理方面。。。这是您希望将仅调整预览帧的脚本排入队列的位置。

结束