去除WordPress脚本和样式表的版本号

用过七牛cdn的同学大概有过这样的经历:在主题里更新了一个js脚本或者css文件后,但是却无法更新七牛那里的缓存文件,因为js脚本或者css文件后面往往添加了?ver=xxx这样的版本号。本文介绍下问题产生的原因及解决办法。

版本号产生原因

这是因为WordPress中使用wp_enqueue_script()和wp_enqueue_style()引入js脚本和css样式表时,会生成一个版本号,如果你不亲自指定,版本号会是WordPress的版本号,比如3.7.1。版本号有好处,可以强制浏览器更新脚本,但有些SEO检测工具会认为带有版本号是非静态化的表现,同样给七牛cdn的缓存更新带来麻烦。

解决办法

在主题的functions.php中加入如下代码,就可以去除版本号:

1
2
3
4
5
6
function sb_remove_script_version( $src ){
    $parts = explode( '?', $src );
    return $parts[0];
}
add_filter( 'script_loader_src', 'sb_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', 'sb_remove_script_version', 15, 1 );

要注意的是,只有通过WordPress的方式引入脚本才会产生版本号,如果自己硬编码进去,这段代码是不起作用的,当然,不推荐硬编码js文件。

小结

本文参考了http://www.solagirl.net/remove-version-string-from-js-css.html这篇文章,确实解决了该问题。

此条目发表在WordPress教程分类目录,贴了标签。将固定链接加入收藏夹。