最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

php - "wp_enqueue_style();" don't load new edited style

programmeradmin0浏览0评论

First, sorry my english. I am using Local by flywheel to manager my site files and my wordpress version is 4.9.4.

Here is the problem, When I use

 wp_enqueue_style('wharever', get_stylesheet_uri());

To load style.css at the first time with a just simple content inside:

body { color: orange; }

Everything is just fine, and we have a page with everything in orange text, but when I change the style.css body color to green (or whatever), they just don't change, and always are orange.

PS.: in wp_enqueue_style, I changed the version parameter and he changes, but only at the first time and stuck with the first color I put for the version that was put.

If this is a feature of wordpress, how can I turn this off? This don't see quite useful know that we can't change style.css at will just to test without change version.

First, sorry my english. I am using Local by flywheel to manager my site files and my wordpress version is 4.9.4.

Here is the problem, When I use

 wp_enqueue_style('wharever', get_stylesheet_uri());

To load style.css at the first time with a just simple content inside:

body { color: orange; }

Everything is just fine, and we have a page with everything in orange text, but when I change the style.css body color to green (or whatever), they just don't change, and always are orange.

PS.: in wp_enqueue_style, I changed the version parameter and he changes, but only at the first time and stuck with the first color I put for the version that was put.

If this is a feature of wordpress, how can I turn this off? This don't see quite useful know that we can't change style.css at will just to test without change version.

Share Improve this question asked Feb 20, 2018 at 19:34 DVDSONDVDSON 234 bronze badges 1
  • This is caused by your browser caching the stylesheet. Nothing to do with WordPress. When you add a different ?ver= to the url, it thinks it's a different stylesheet and reloads it. You can also "force refresh"; usually ctrl+f5 or apple+f5. – Nathan Johnson Commented Feb 20, 2018 at 20:07
Add a comment  | 

3 Answers 3

Reset to default 3

Another solution is to use filemtime for the cachebusting, so that the last modified timestamp is used as the querystring variable.

This has the advantage that of still using the browser cache, and yet, a new file is served when the file is actually changed because the querystring changes. eg.

$lastmodtime= filemtime(get_stylesheet_directory().'/style.css');
wp_enqueue_style('whatever', get_stylesheet_uri(), array(), $lastmodtime);

It is a caching problem. To get around this I append a random string to the stylesheet uri that discourages the browser from caching it.

First you need a random string. I use this simple function to generate one.

function randomAlphaNumeric($length) { $pool = array_merge(range(0,9), range('a', 'z'),range('A', 'Z')); $key=''; for($i=0; $i < $length; $i++) { $key .= $pool[mt_rand(0, count($pool) - 1)]; } return $key; }

Now just use it in your enqueue like this:

wp_enqueue_style('wharever', get_stylesheet_uri().'?random='.randomAlphaNumeric(5));

You can change your

 wp_enqueue_style('wharever', get_stylesheet_uri());

to

 wp_enqueue_style('wharever', get_stylesheet_uri(),  array(), time(), 'all');

And it will start working just fine.

发布评论

评论列表(0)

  1. 暂无评论