2

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.

  • 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 Feb 20 '18 at 20:07
1

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));

1

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);
  • Great idea. This way it still safely uses caching when the file hasn't changed. Thanks. – n8bar Mar 2 '18 at 23:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.