主题定制器不加载JS进行实时预览

时间:2013-04-17 作者:user1632018

我目前正在为主题定制器添加选项。在过去的两个小时里,我一直在尝试让实时预览正常工作,我正在试图找出为什么我的主题没有加载theme-customizer.js 实时预览所需的文件。

如果保存并刷新页面,我添加到主题定制器的所有选项都会起作用。所以我知道这不是设置的问题。

我目前有一个钩子可以在customize.php 文件以及自定义程序的所有设置。我还有一个单独的theme-enqueue.php 在这里,我为我的主题将其他JS文件排队。

下面是一个钩子示例,我试图从customize.php 文件:

function mytheme_customize_preview_js() {
wp_enqueue_script( \'mytheme-customizer\', get_template_directory_uri() . \'/js/theme-customizer.js\', array( \'customize-preview\' ), \'20120187\', true );
}
add_action( \'customize_preview_init\', \'mytheme_customize_preview_js\' );
当我检查chrome中加载的javascript文件时,它似乎加载了除此之外的所有我需要的文件。有人能解释一下情况吗?

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

我认为你的脚本加载正确,在Twenty12中使用了相同的函数(但你的脚本在iframe中),但我可能错了(不知道你的主题是如何构造的,可能是多包含的路径相关问题)

enter image description here

要在不刷新的情况下查看更改,必须在customize\\u register函数的add\\u设置和get\\u设置中使用“transport”参数

$wp_customize->add_setting( \'my_setting\', array( \'default\' => \'setting_value\', \'transport\' => \'postMessage\', ) );
这可以是“刷新”(默认)或“后消息”。只有在编写自定义Javascript以控制主题定制器的实时预览时,才将其设置为“postMessage”。

$wp_customize->get_setting( \'my_setting\' )->transport = \'postMessage\';

SO网友:Mauro Colella

可能是因为您是从init或admin\\u init Wordpress钩子中调用它,而应该从after\\u setup\\u主题钩子中调用它。

例如:

function mytheme_customize_preview_js() {
    wp_enqueue_script( \'mytheme-customizer\', get_template_directory_uri() . \'/js/theme-customizer.js\', array( \'customize-preview\' ), \'20120187\', true );
}
function my_after_setup_theme(){
    add_action( \'customize_preview_init\', \'mytheme_customize_preview_js\' );
}

add_action( \'after_setup_theme\', \'my_after_setup_theme\' );

SO网友:JDP

这可能不是问题的确切答案。但它帮助我解决了我们正在讨论的问题。

使用时\'transport\' => \'postMessage\', 我看不到生动的预告片。因此,我使用following code at Github

我只是复制粘贴了这个代码。验证了它,然后根据我的要求进行了调整。我知道这不是解决方案,但对我来说是最好的。

感谢汤姆·麦克法兰的密码。

SO网友:dipali

Try this

function mytheme_customize_preview_js() {
wp_enqueue_script( \'mytheme-customizer\', get_template_directory_uri() . \'/js/theme-customizer.js\', array( \'customize-preview\' ), \'20120187\', true );
} 
add_action( \'admin_init\', \'mytheme_customize_preview_js\' );
结束