半夏凉歌   还在忙吗,别忘了给自己一个微笑。   2023-03-28

前段时间介绍“优化网站配置,提升访问速度”的时候,提到了引用CDN公共JS库。对于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的升级而被覆盖,但会因为主题的升级或更换而失效。大家可以根据自己的情况选择用哪种方法。

 

我们想直接引用通过外部托管的适合WordPress版本的jQuery库(或者是CDN版本的jQuery库),那样的话,操作起来也并不难,直接使用下面的function函数:

function add_scripts() {
wp_deregister_script( ‘jquery’ );
wp_register_script( ‘jquery’, ‘http://code.jquery.com/jquery-1.11.1.min.js’);
wp_enqueue_script( ‘jquery’ );
}

add_action(‘wp_enqueue_scripts’, ‘add_scripts’);
从以上代码可以看出,我们主要使用了三条函数:

wp_deregister_script():将WordPress中当前的jQuery版本禁用
wp_register_script():注册新的CDN版本的jQuery
wp_enqueue_script():将jQuery引入到主题或插件中
值得注意的一点是,在引入jQuery上,我们使用了add_action(),而非add_filter(),因为我们不希望去改变 WordPress本身的文件代码,相反,在加载新的jQuery 时,我们还要依赖WordPress去为我们做事情,所以我们使用了action钩子,而不是filter过滤器。更多关于action及hook这些东西的详细解释,请访问WordPress 官方文档。