Support » Plugins » [Plugin: WP Super Cache] how-to keep shopping cart dynamic?

  • Hi,

    Some available shopping cart plugins like Quick Shop and eShop provide a cart widget and/or have some cart+checkout pages. Is there some documentation on how to make WP Super Cache keep only those parts (widget plus checkout pages) dynamic and still do caching on the rest?

    In the FAQ’s I found some info on < !–mfunc .. > and < !–mincl .. > that look useful but I have no idea how to implement these tricks on existing plugin code. Ofcourse it all depends on the particular plugin but is it at all possible? Or should I approach this differently?

    Thanks for any info 🙂

Viewing 15 replies - 1 through 15 (of 32 total)
  • Looking through posts for the cache plugin I found this:

    Looks like you can specify parts of the blog not to be cached. Just add in the auto generated pages – specifically the cart, checkout, cancelled and thank you for your order pages.

    I don’t know about the widget though, sorry.

    Thanks, elfin. Right, excluding the checkout pages and such via their slug name would be the easiest method.

    However, what I am looking for is some way to make the QuickShop and eShop plugins sort of work together with SuperCache and make this exclusion automatic instead of leaving it to individual users to set the exclusion manually.

    Or maybe SuperCache could include the appropriate exclusion rules by default? That would be nice enough 🙂 and a new setting in SuperCache allowing certain widgets to stay dynamic sounds good too! 😉

    people are free to change pages though, eShop doesn’t really care where they are, so long as it knows.

    Hmmm, I did have a quick look at the cache, but didn’t see an easy method to add things via a plugin to it’s exclude list. I’d prefer via page id, because then I can link to the existing settings within eShop. So if you can find out how, then I can add it without a problem… (I think)

    You could have the plugin set the DONOTCACHEPAGE constant. That will stop the plugin caching them.

    See for more.

    I’m not familiar with the cache plugin, but is it not possible to add a setting to the edit post/page that would stop that particular page from being cached?

    At what stage is that constant used, can I add it to a function that filters on the content?

    Thanks donncha, for chipping in here. that looks like a promising constant… is DONOTCACHEPAGE only used by supercache or is that a wp-cache constant? I mean, it might serve its purpose well when included in eShop but only if we can be sure it will not affect other situations where SuperCache is not running.

    And along the same line, is there no constant like DONOTCACHEWIDGET ?

    Do the < !–mfunc .. > and < !–mincl .. > tags work when used inside plugin files or only in theme files?

    elfin – that constant is used right at the end of the request so set it at any time before shutdown and the page won’t be cached.

    RavanH – no constant for widgets, as the plugin is a full page caching tool!
    Those tags will work anywhere just as long as they’re printed to the browser.

    Rich, do you see any possibility to get the constant DONOTCACHEPAGE into eShop? Or do you think a plugin for SuperCache (like done for Bad Behavior and No Adverts for Friends) would be a better approach?

    donncha, what is preferred: a plugin for SuperCache (which means we can be sure the constant is set before anything else?) or just use the constant in the shop plugin?

    aha – thanks Donncha.

    RavanH if you email me I’ll send you a version to test, and I’ll work with you until we get it working.

    Donncha, i am still not clear about this method of keeping a function dynamic. trying to get the output of a widget stay dynamic, i converted the widget function to output <! –mfunc .. > and then call a second function where the output is generated. This now looks like this:

    function my_widget($args) {
    	global $blog_id;
    	echo $before_title.$title.$after_title; ?>
    <!--mfunc eshop_widget_dynamic_output($blog_id) -->
    <?php my_widget_dynamic_output($blog_id) ?>
    	echo $after_widget;
    function my_widget_dynamic_output($blog_id){
    	echo 'this is wpmu blog '.$blog_id;

    This seems to work in ON mode on WPMU 2.8.6 except for the fact that the the last line of the page source shows
    <!-- Dynamic page generated in ... seconds. --> and no longer the usual
    <!-- Cached page generated by WP-Super-Cache on ... -->

    Moreover, in HALF ON mode only the first time I load a page with this widget, it shows the correct content. Reloading the page will show content up to the widget and to abort with <! –mfunc–> .

    I have the feeling I am missing the point here. Would you enlighten me a bit more?

    Check your php error log? Anything there?

    You should use the plugin in half-on mode with dynamic mfunc code. I’ve just noticed a bug in the plugin where the static file is generated even when dynamic code is detected. That’ll be fixed in the next release.

    Anyway, the cache file is probably being served before the plugin is loaded. Set $wp_super_cache_late_init to 1 in wp-content/wp-cache-config.php to serve the file after “init” and after plugins are loaded. Does that work?

    The mfunc stuff is legacy code from wp-cache. I’ve never used it as I never had a use for it. Nobody’s ever helped with this portion of code so it’s not as mature as other parts of the plugin.

    a version of eShop has now been released with the relevant cache defines in it. Seems to work according to RavanH.

    Thanks both for your help.

    Sadly, I do not have access to error logs on my shared hosting provider (1&1) so that will not reveal any new info… Can you advise me some debugging/error reporting plugin that will work on WMPU maybe?

    About mfunc : I have the feeling it is supposed to be used in template files only. Where ever it is used, it appears to be resulting in the complete page being served dynamically. Not just the function, which probably makes sense, or does WP-Cache work differently? So when used in a widget function, all pages will likely be served dynamically, defeating the whole point of running SuperCache… Am I correct in that assumption?

    About DONOTCACHEPAGE : does that work both in ON and HALF-ON mode?

    Supercache has very extensive debugging.

    mfunc code just has to be printed to the browser. Doesn’t matter where the php that prints it is. Only works in half-on mode. You might need to set the late init variable in wp-cache-config.php (see the config file in the plugin directory, might need to update wp-content/wp-cache-config.php)

    DONOTC.. works in any mode. It stops the page being cached. If a page is cached already then it obviously won’t work.

    Donncha, another question about the DONOTCACHEPAGE constant;

    Is this meant as a flag for a specific page not to be cached, or for a request? I’m trying to figure out a way to not cache pages for users that are not logged in, but I’m using a custom user system, not the one that comes with WordPress. So I’m trying to tell the plugin not to cache requests for or serve cached pages to users with a certain $_SESSION flag.

    I wrote a small plugin, but it doesn’t seem to work:

    function wp_super_cache_dont_cache_for_members() {
    	if( $_SESSION['logged_in'] ) {
    		define( "DONOTCACHEPAGE", true );
    add_action("init", "wp_super_cache_dont_cache_for_members");


Viewing 15 replies - 1 through 15 (of 32 total)
  • The topic ‘[Plugin: WP Super Cache] how-to keep shopping cart dynamic?’ is closed to new replies.