经常折腾 WordPress 主题的博友肯定试过修改完 css 或者 js 文件后,有时候得几经折腾(WordPress 后台禁用/手动清理缓存插件内容、刷新浏览器缓存、刷新 CDN……)才能把新的文件刷出来……最快捷的方法是手动修改 css 或者 js 文件的版本,不过,每修改一次就要手动更新版本号一次,也挺累的。
那么,如何让文件版本号自动更新呢?
方法一:用当前时间作为版本号
比如,我们可以这样控制主题 style.css 的文件版本。
<link rel="stylesheet" href="//yourdomain.com/wp-content/themes/themename/style.css?v=<?php echo time(); ?>">
但这个方法显然会相当耗费服务器资源。因为每刷新一次页面,就要获取当前时间(unix 格式)下的 css文件版本。
方法二:用文件(最后修改)时间作为版本号
用 filemtime 取得文件修改时间
<link rel="stylesheet" href="//yourdomain.com/wp-content/themes/themename/style.css?ver=<?php echo filemtime(http://yourdomain.com/wp-content/themes/themename/style.css); ?>" />
当然,更好的办法是用钩子,比如可以这样加载 style.css、script.js 文件和通过文件最后修改时间控制它们的版本:
function theme_scripts() {
wp_enqueue_style( 'style', get_stylesheet_uri(), array() , filemtime(get_stylesheet_directory().'/style.css'));
wp_enqueue_script( 'script', get_template_directory_uri().'/js/script.js', array(), filemtime(get_stylesheet_directory().'/js/script.js') , true );
}
add_action( 'wp_enqueue_scripts', 'theme_scripts' );
我现在用的是上面这个代码。
参考文章:
新年快乐!过来学习学习。(themebetter更好的主题)
@themebetter 免费送主题么?哈哈……
已经无感了。你还在折腾~
@灰常记忆 生命不息,折腾不止……
应该是$rootdir为空.取个文件目录吧.
@大致 确实,没看出来呢。怪不得不成功。
@大致 然并卵,$rootdir 怎么定义都出不来,那博客也留言不了,删掉参考了。
一开始玩WP的时候也喜欢折腾折腾,最近发现越来越折腾不动了
@FROYO 折腾不完的,专心写文章比较好。
我折腾的少,都是手动刷新。
@从良未遂 加了这个代码就可以一劳永逸了,也挺好的。
本地倒是没遇到什么缓存问题,cdn上是只能这个方法,不过我都是手动改的。
@不亦乐乎 手动更改,不经常折腾的话还行……
我都是设置Cache-Contro来控制
@Shrek 这个?https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=zh-cn , 好像更高级。
基本不折腾了,博客就是一个传说。
@郑永 偶尔折腾下还是不错的,得与时俱进啊。
@老头
哈哈,2016就说不折腾了。。到现在还在折腾。
@郑永 停不了的……
最近一个项目,在微信里面,某些手机在一些页面停留一段时间后,切换页面总会出现没加载 CSS 的情况,而且再点其他页面也不会在加载了,只能刷新页面才能解决,不知道是什么原因=。=
@fooleap 是不是 ajax 加载的原因?
最近常修改主题,这个解决了实时查看效果的问题。
相当合适。
@zhujiwiki 嗯,适合折腾。
另外,大爱这样的主题啊