-1

I have a code that redirects users to a random post whenever they visit the homepage:

if (have_posts()) {
    query_posts('orderby=rand');
    while (have_posts()) {
        the_post();
        wp_redirect(get_permalink());
    }
}

The problem is that it redirects me to the same post whenever I'm not logged in. I suspect W3 Total Cache is the culprit as it puts logged in users in an exception.

However, the problem persisted even though "Cache front page" is unchecked and "index.php" and "*/" is put into the page exception list. I even tried to disable the whole thing, Page Cache, but still nothing.

Finally I tried to disable the Browser Cache and voilá, random posts! But that's not a viable solution and I don't understand how Browser Cache could be causing 'orderby=rand' to return the same posts and not Page Cache.

Any help?

EDIT: It only returns the same post when I reload page through the site (clicking a 'href="/"' link or redirecting to a 'href="/"' link through jquery. But when I reload the page through the browser adressbar it works fine. How?

2
  • Have you tried to set the status header to 307? wp_redirect($url, 307)
    – fuxia
    Commented May 9, 2014 at 13:29
  • I did, but didn't change anything. I noticed another thing however that it only returns the same post when I reload the page inside the site (Edited my question).
    – Tony Fire
    Commented May 9, 2014 at 13:39

1 Answer 1

0

Solved this by changing 'Expires header lifetime' on HTML & XML to '1 second'. Not sure if this will decrease performance on other things though.

1
  • If you're only caching for a single second, seems like you're just wasting server resources, since only a rapidly refreshing visitor would even utilize your cache.
    – Zade
    Commented Nov 19, 2018 at 10:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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