How do I turn off the WP Super Cache & W3 Total Cache functionality programmatically? For instance, I neither want to make it use the cache on some requests nor cache the output of the request, do they support that using filters? I couldn't find anything useful in their documentation.

  • Why would you want to disable the cache? There's no reason to ever do that.
    – Otto
    Oct 4 '12 at 14:26
  • 1
    I am working on a mobile theme plugin, so need to make sure that it gets served directly, without affecting the main site. This seems like the way out unless both plugins support caching mobile pages in someway?
    – Ashfame
    Oct 4 '12 at 14:30
  • 1
    I know this is old, but this link talks about how to programmatically flush the cache, in case it's helpful to anyone: wordpress.stackexchange.com/questions/7112/…
    – David Hobs
    Mar 9 '13 at 23:57

Easiest way to do this was to define a constant programmatically:

// Tell WP Super Cache & W3 Total Cache to not cache WPReadable requests
define( 'DONOTCACHEPAGE', true );
  • This only disables caching the page but still allows to serve already cached content. Feb 26 '18 at 8:53
  • @AlexeyKosov Don't remember that being the case but it has been years.
    – Ashfame
    Feb 26 '18 at 9:50

Both plugins you mention have settings pages that allow you to add directories or specific files to not cache.

These setting files are saved as text files in the relevant directory. You should be able to programatically 'append' your /mobile-theme/ directory to these settings files.


As per this question, you can use fragment caching to exclude specific things from being cached:

Edit your templates to with the following syntax to ensure that dynamic features remain so: Example 1:

<!-- mfunc any PHP code --><!-- /mfunc -->

Example 2:

<!-- mfunc -->any PHP code<!-- /mfunc -->

Example 3:

<!--MFUNC           -->
                                      echo rand();
<!--/mfunc -->

Example 4:

<!-- mclude path/to/file.php --><!-- /mclude -->

Example 5:

<!-- mclude -->path/to/file.php<!-- /mclude -->

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