WordPress禁止加载自带的jQuery产生的问题及解决办法

对于WordPress来说,最重要的JS莫过于jQuery.js了,不少功能都需要它的支持。如果我们引用了CDN公共库中的jQuery.js,或者主题自带了jQuery.min.js,就需要禁掉WordPress自带jQuery.js的加载了(不禁掉的话甚至还可能会出现新添加的js代码无法正常运行的情况)。

方法一 修改script-loader.php

最常见的方法,是修改/wp-includes/script-loader.php文件。将script-loader.php第127行(WordPress3.5.1中)

$scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.8.3' );

修改为

if(is_admin()){
		$scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.8.3' );
	}

即可。
之所以加上if(is_admin())语句而不是直接删除或者替代为自己的jQuery文件,是因为直接删除或者替代为自己的jQuery文件会导致后台无法使用自带的jQuery而出现错误。
这种方法的缺陷在于,WordPress升级之后修改的文件就会被覆盖,需要再次修改。

方法二 修改function.php

在主题文件夹下的function.php中,加入如下代码:

//禁止加载WP自带的jquery.js
if ( !is_admin() ) { // 后台不禁止
function my_init_method() {
wp_deregister_script( 'jquery' );  // 取消原有的 jquery 定义
}
add_action('init', 'my_init_method'); 
}
wp_deregister_script( 'l10n' );

跟方法一不同的是,根据方法二修改的文件不会因为WordPress的升级而被覆盖,但会因为主题的升级或更换而失效。大家可以根据自己的情况选择用哪种方法。

但是修改到这里还不算完,网上大部分的教程都写到这里就算完了,但是禁止加载自带的jquery因为版本问题会造成各式各样的问题,这里只说解决办法。

我们只需要把wordpress自带的jquery-migrate.min.js换成高版本的jquery-migrate即可。

关于什么是jquery-migrate.min.js,jquery官网有详细介绍:

jQuery Migrate插件

我们创建了jQuery Migrate插件, 以简化从旧版jQuery的过渡。该插件将还原已弃用的功能和行为,以便较旧的代码仍可在新版本的jQuery上正常运行。使用未压缩的开发版本来诊断兼容性问题,它将在控制台上生成警告,可用于识别和修复问题。使用压缩的生产版本可以简单地解决兼容性问题,而不会生成控制台警告。

有两种版本的Migrate。第一个将帮助您将1.9之前的jQuery代码更新为jQuery 1.9直至3.0。您可以在此处获取该版本:

下载压缩的生产版jQuery Migrate 1.4.1

下载未压缩的开发jQuery Migrate 1.4.1

使用Migrate 1.x并升级到jQuery 1.9或更高版本后,第二个版本可帮助您更新在jQuery 3.0或更高版本上运行的代码:

下载压缩的,生产版的jQu​​ery Migrate 3.1.0

下载未压缩的开发jQuery Migrate 3.1.0

留下评论