我正在尝试钩住customizer\\u preview\\u init操作,以便触发我在customizer中所做更改的实时预览。然而,我的第一次测试失败了。我只是想得到一个警报,里面有火。js公司
知道我做错了什么吗?
//Add customizer.php to admin:
if ( is_admin() ) :
require_once( GENESIS_ADMIN_DIR . \'/customizer.php\' );
自定义程序。php:
function mytheme_customizer_live_preview()
{
wp_enqueue_script(
\'mytheme-themecustomizer\', //Give the script an ID
get_template_directory_uri().\'/framework/admin/customizer.js\',//Point to file
array( \'customize-preview\' ), //Define dependencies
\'\', //Define a version (optional)
true //Put script in footer?
);
}
add_action( \'customize_preview_init\', \'mytheme_customizer_live_preview\' );
自定义程序。js公司
alert(\'customizer.js loaded!\');
( function( $ ) {
alert(\'Customizer!\');
//Do Stuff
} )( jQuery );
Update: 看来我的排队失败了。自定义程序。在开发工具资源面板中找不到js文件。
我已经验证了页脚。事实上,php确实像预期的那样有一个wp\\u footer()调用。这是Genesis主题,可能是一些影响排队的过滤器?
SO网友:kaiser
我编写了一个快速插件,用一个近乎普通的多站点/网络安装重现您的问题,在一个主题为TwentyForteen的子站点上运行该插件。它由两个文件组成,都位于同一目录中:plugin.php
和theme-customizer.js
:
主插件文件:
<?php
namespace WPSE;
/** Plugin Name: (#138550) Theme Customizer Register Script */
# add_action( \'customize_preview_init\', \'WPSE\\registerScript\' );
add_action( \'customize_controls_enqueue_scripts\', \'WPSE\\registerScript\' );
function registerScript()
{
wp_enqueue_script(
\'wpse-theme-customizer\',
plugin_dir_url( __FILE__ ).\'theme-customizer.js\',
array(
\'jquery\',
\'customize-preview\',
),
filemtime( plugin_dir_path( __FILE__ ).\'theme-customizer.js\' ),
TRUE
);
}
JavaScript测试文件:
/*globals jQuery */
( function( $ ) {
"use strict";
alert( \'Here we go!\' );
} )( jQuery );
上面的作品很有魅力:)
提示:您可以使用plugin_dir_path()
in themes 还有
在上面的@toscho评论和他的链接后编辑answer here, 我决定测试一个钩子和另一个钩子。和surprise!!1! 非,customize_controls_enqueue_scripts
更早地从核心中查找快照似乎更可靠,因为它并没有以某种随机方法隐藏在大量的单身/穷人名称空间中。结论:同意customize_controls_enqueue_scripts
忘了吧customize_preview_init
. 前btw紧随其后customize_controls_init
已触发回调,因此其他代码干扰的可能性较小。