0%

WordPress中去掉CSS文件后的参数,解决修改样式不生效的问题

一、移除主题中的样式版本号

在更新新版本之后,发现WordPress中的JS和CSS文件引入时带有ver参数,在浏览器中审查元素或者 F12 查看其引入的文件,就如图中一样,文件的末尾会带有一个这样的参数,这样带来的麻烦有很多。很大的问题就是 修改style.css 文件不生效,它带有这个参数的作用就会让浏览器加载缓存的 JS 和 CSS 文件,而你修改了样式之后它还是不会生效。 0150201161853 那么这个怎么去除? 找到你的主题文件中的 functions.php 文件 找到类似于下面的代码:

1
2
3
4
5
6
wp_register_script( 'jquery','//libs.baidu.com/jquery/1.8.3/jquery.min.js', false,'1.0');
wp_enqueue_script( 'jquery' );
wp_register_script( 'default', get_template_directory_uri() . '/js/jquery.js', false, '1.0', dopt('d_jquerybom_b') ? true : false );
wp_enqueue_script( 'default' );
wp_register_style( 'style', get_template_directory_uri() . '/style.css',false,'1.0');
wp_enqueue_style( 'style' );

你可以查找这几个函数名来找到。 你可以发现倒数第二行,引入了 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样式。但是,修改完之后仍然存在不生效的问题。这个怎么办? 如下图所示,150204145120 审查该登录界面的元素,你会发现它的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
2
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );

顺藤摸瓜,我们找到了 wp-includes 目录下的 version.php 文件,其中就定义了版本号这个变量

1
$wp_version = '4.0.1';

根据上面的思路,我们只需要把 version 改成null即可,试一下。这个方法不算好,去掉版本号之后一些插件可能识别有问题,请谨慎修改。

1
$wp_version = null;

再来审查一下元素,我们就已经发现,版本号的后缀不见啦。 QQ截图20150204145920 我们之前修改的样式也已经生效了!如果还有更好的方法,欢迎补充! 以上只是我的一些拙见,希望对大家有帮助!