W3 Total Cache
Fragment caching with Twitter/Recent Post widgets? (8 posts)

  1. azn137
    Posted 4 years ago #

    So I was trying to exclude W3TC for 2 of my widgets: "Recent post" and Jetpack's Twitter widget. First, I tried wrapping my get_sidebar() by using:

    <!-- mfunc -->get_sidebar();<!-- /mfunc -->

    but I didn't want to exclude the whole sidebar, just some widgets. So I tried excluding Jetpack's Twitter widget by using

    <!-- mclude -->/wp-content/plugins/jetpack/modules/widgets/twitter-widget.php<!-- /mclude -->

    and "Recent post" widget by using

    <!-- mclude -->/wp-includes/post.php<!-- /mclude -->

    but these pretty much blew up my blog. It threw an error that looks like the aforementioned php files don't exist at all. Sorry, I can't give you the exact wording now, since it'd blow up my blog.

    How do you set W3TC to exclude just some widgets?


  2. haddow777
    Posted 4 years ago #

    That would be a real issue. You can't exclude the file because wordpress doesn't load the widgets like that. The widgets are dynamic elements that are generated deep in the WordPress system. The whole side bar is the easiest solution. I will give a quick look at the code to see if I can find a way to narrow it down for you though.

  3. azn137
    Posted 4 years ago #

    Thank you!

  4. haddow777
    Posted 4 years ago #

    Okay, so this is a possible solution, but like I said, it is more difficult. Also, this is really a customization that you should have your own coding experience or pay a person with coding experience to do.

    Each widget container in a theme, at least the one's bothered looking at, like twentyeleven, is initialized in the functions.php file in the theme folder. If you search for "add_action( 'widgets_init'", you should find it. At the end of it, there is the name of a function where all the widget slots in your theme are initialized.

    Each widget initialization includes spots where you could (possibly) include some form of cache fragment code.

    'before_widget' => '<aside id="%1$s" class="widget %2$s">',
    'after_widget' => "</aside>",

    Again, due to the dynamic nature of it all, and the fact that I am basing this all on theory, this might not work. I'm not sure if what ends up between 'before_widget' and 'after_widget' will be a function and I'm pretty sure it isn't a file.

    I hope you the best, and remember, if what you try doesn't work right away, re-evaluate doing the whole sidebar.

  5. haddow777
    Posted 4 years ago #

    Does anyone know how to update a past post? I would have rather updating my last post as I forgot to mention something.

    Oh well. Don't forget, if you are using a child theme, the functions.php in the child theme doesn't override the functions.php in the parent theme. It appends it. So the functionality I mentioned most likely is in the the parent theme's version of the file.

  6. azn137
    Posted 4 years ago #

    Thank you very much for looking into this. I dug up the code and follow it; looks like it's gonna lead to WordPress backend files anyway. So, for the time being, I'm just gonna disable caching for the sidebar.
    <!-- mfunc -->get_sidebar();<!-- /mfunc -->

  7. azn137
    Posted 4 years ago #

    FYI, the below syntax is incorrect:

    <!-- mfunc -->get_sidebar();<!-- /mfunc -->

    All it does is displaying the "get_sidebar();" on the frontend. This seems to work:

    <!-- mfunc get_sidebar(); --><!-- /mfunc -->

    I have W3TC Version with WP 3.2.2, php 5.3.x with FastCGI.

  8. Frederick Townes
    Plugin Author

    Posted 3 years ago #

    Please check out the latest release.

Topic Closed

This topic has been closed to new replies.

About this Plugin

  • W3 Total Cache
  • Frequently Asked Questions
  • Support Threads
  • Reviews

About this Topic