包含jQuery时Wordpress无法正常工作

时间:2013-02-11 06:55:43

标签: jquery wordpress wordpress-plugin

如果我在Wordpress中包含更高版本的jQuery,那么Widgets页面就不再有效了。当我尝试单击特定小部件中的向下箭头来更新它时,它不会显示其设置。

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');

1 个答案:

答案 0 :(得分:1)

我确信你可以做很少的技巧来完成这项工作,但我认为最好(对于版本兼容性)包括jQuery Migrate Plugin。这个插件提供了两个基本功能:

  1. 重新启用已弃用的功能,以便与v1.8兼容的代码再次运行
  2. 当使用不推荐使用的功能时,它会向开发者控制台记录警告,因此您应该更容易解决问题。
  3. 应该在jQuery之后立即加载migrate插件,例如

    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');