我目前正在为主题定制器添加选项。在过去的两个小时里,我一直在尝试让实时预览正常工作,我正在试图找出为什么我的主题没有加载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文件时,它似乎加载了除此之外的所有我需要的文件。有人能解释一下情况吗?
最合适的回答,由SO网友:Tribalpixel 整理而成
我认为你的脚本加载正确,在Twenty12中使用了相同的函数(但你的脚本在iframe中),但我可能错了(不知道你的主题是如何构造的,可能是多包含的路径相关问题)
要在不刷新的情况下查看更改,必须在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\' );