一、移除主题中的样式版本号
在更新新版本之后,发现 WordPress 中的 JS 和 CSS 文件引入时带有 ver 参数,在浏览器中审查元素或者 F12 查看其引入的文件,就如图中一样,文件的末尾会带有一个这样的参数,这样带来的麻烦有很多。很大的问题就是 修改 style.css 文件不生效,它带有这个参数的作用就会让浏览器加载缓存的 JS 和 CSS 文件,而你修改了样式之后它还是不会生效。 那么这个怎么去除? 找到你的主题文件中的 functions.php 文件 找到类似于下面的代码:
1 |
wp_register_script( 'jquery','//libs.baidu.com/jquery/1.8.3/jquery.min.js', false,'1.0'); |
你可以查找这几个函数名来找到。 你可以发现倒数第二行,引入了 style.css 文件,那么第四个参数就是罪魁祸首了,就是文件的版本号,把第四个参数修改为 null 即可,记住不要加引号的 null
1 |
wp_register_style( 'style', get_template_directory_uri() . '/style.css',false,null); |
这样刷新页面,你就会发现 style.css 样式表后面的参数就不见啦。 同样的道理,对于 JS 文件,你同样可以通过修改第四个参数来解决问题。
二、移除主题之外样式版本号
除了主题之内的 CSS 和 JS 带有版本号,主题之外的界面也带有版本号,比如登录界面等等,如果你想定制一个个性化的登录界面,那么你可以修改 wp-admin 目录下的 css 样式。但是,修改完之后仍然存在不生效的问题。这个怎么办? 如下图所示, 审查该登录界面的元素,你会发现它的 CSS 样式仍然带有版本号,这会导致我们不管怎样修改 login.min.css 仍不会生效,那么我们就分析一下源代码。 我从 wp-admin 目录下找到了 load-styles.php 文件,它正是加载 CSS 样式所必备的文件,但是和上面的主题中加载 CSS 文件的方式不同,它并不存在 wp_register_style 这个方法,不过我发现,它引入了一个 version.php 文件,代码如下:
1 |
require( ABSPATH . WPINC . '/version.php' ); |
那么它的路径在哪里,我们会发现 ABSPATH 和 WPINC 两个变量,这是两个宏定义
1 |
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' ); |
顺藤摸瓜,我们找到了 wp-includes 目录下的 version.php 文件,其中就定义了版本号这个变量
1 |
$wp_version = '4.0.1'; |
根据上面的思路,我们只需要把 version 改成 null 即可,试一下。这个方法不算好,去掉版本号之后一些插件可能识别有问题,请谨慎修改。
1 |
$wp_version = null; |
再来审查一下元素,我们就已经发现,版本号的后缀不见啦。 我们之前修改的样式也已经生效了!如果还有更好的方法,欢迎补充! 以上只是我的一些拙见,希望对大家有帮助!