$wp_Customize CUSTIZER_PREVIEW_INIT未在Java脚本内触发

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

我正在尝试钩住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主题,可能是一些影响排队的过滤器?

2 个回复
SO网友:N2Mystic

本例中的问题与我如何添加自定义有关。php脚本。我在一个is\\u admin()检查中加载了它(请参阅上面的更新问题,我在其中包含了代码分支)。

阅读后Otto\'s post, 我意识到定制器挂钩在这种情况下不会触发。

SO网友:kaiser

我编写了一个快速插件,用一个近乎普通的多站点/网络安装重现您的问题,在一个主题为TwentyForteen的子站点上运行该插件。它由两个文件组成,都位于同一目录中:plugin.phptheme-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 已触发回调,因此其他代码干扰的可能性较小。

结束

相关推荐

收到“ReferenceError:未定义jQuery”--不知道为什么!

我以前在这里问过这个问题,但从来没有得到答案。在Firebug的控制台中,我得到“ReferenceError:jQuery未定义”。我不知道为什么。有人能帮忙吗?这是我正在处理的页面:http://goinspire.com/jwrp-hotel-registration/如果有帮助的话,我可以从我的网站上提供其他代码文件,请告诉我你想要哪些。提前感谢您!编辑:我如何理解为什么jQuery没有足够早地包含在页面中?非常感谢。