如果我在 Wordpress 中包含更高版本的 jQuery,则“小部件”页面之类的内容将不再工作。当我尝试单击特定小部件中的向下箭头来更新它时,它不显示其设置。
wp_enqueue_script('ecom_jquery_script', 'http://code.jquery.com/jquery-1.9.0.min.js');
wp_enqueue_script('ecom_jquery-ui_script', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js');
wp_enqueue_script('ecom_flexslider_script', plugins_url('/js/ecom-jquery.flexslider.js', __FILE__));
wp_enqueue_script('ecom_admin_script', plugins_url('/js/ecom-main.js', __FILE__));
但是当我注释掉 jquery 和其他依赖于它的脚本时,小部件页面将会工作。
我已经尝试寻找解决方案,但常见的解决方案是使 jquery 不冲突:
$j=jQuery.noConflict();
// Use jQuery via $j(...)
$j(document).ready(function(){
alert('test');
});
但这不起作用,因为简单地包含较新版本的 jquery 将使依赖于旧版本 jquery 的脚本无法工作。请帮忙。
注销脚本也不起作用,因为如果使用较新版本的 jquery,wordpress 就会拒绝工作:
wp_deregister_script('jquery');
我确信您可以采取一些技巧来完成这项工作,但我认为最好的(对于版本兼容性)是包含 jQuery Migrate Plugin。该插件提供了两个基本功能:
迁移插件应在 jQuery 之后立即加载,例如
wp_enqueue_script('ecom_jquery_script', 'http://code.jquery.com/jquery-1.9.0.min.js');
wp_enqueue_script('ecom_jquery_mig_script', 'http://code.jquery.com/jquery-migrate-1.0.0.js');
但是,您应该查看上一个 jQuery 版本的 changelog。
注意:
wp_deregister_script('jquery')
功能正在工作,但您需要使用相同的名称(jquery)再次注册,然后像这样入队:
wp_deregister_script('jquery')
wp_register_script('jquery', 'http://code.jquery.com/jquery-1.9.0.min.js');
wp_enqueue_script('jquery');
function prefix_remove_scripts() {
wp_dequeue_script( 'jquery-init-custom-script' );
wp_dequeue_script( 'leadin-script-loader-js' );
wp_deregister_script('jquery-init-custom-script');
wp_deregister_script('leadin-script-loader-js');
wp_register_script('jquery-init-custom-script', '', false, '1.11.3', 'true');
wp_register_script('leadin-script-loader-js', '', false, '1.11.3', 'true');
wp_enqueue_script('jquery-init-custom-script');
wp_enqueue_script('leadin-script-loader-js');
}
add_action( 'wp_enqueue_scripts', 'prefix_remove_scripts', 100 );