Print

Print


If you are comfortable getting into your WP theme code, I recommend just using PHP's APC Cache. For instance, in your header.php file where Wordpress inserts your header, you could slightly modify it using an if/else statement that tests whether the nav menu is stored in the cache. If it is already cached, it loads the cached copy. If it isn't cached, it runs the typical WP function for fetching the nav menu, loads it, and then stores it in the cache for next time.

Something like this:

<?php 
if(!empty(apc_fetch('navmenu'))){
	echo apc_fetch('nav_menu'); //echo the cached copy
}else{
	wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu' ) ); //load the menu
	apc_store('nav_menu', wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu', 'echo'=>false ) );
}
?>

You could do the exact same thing for all the other elements you want to cache. This is extremely granular and works very well.

Note that you may have to enable PHP APC manually on your server for this to work. 

Josh Welker


-----Original Message-----
From: Code for Libraries [mailto:[log in to unmask]] On Behalf Of Wilhelmina Randtke
Sent: Tuesday, May 28, 2013 4:30 PM
To: [log in to unmask]
Subject: [CODE4LIB] Wordpress: Any way to selectively control caching for content areas on a page?

In a Wordpress site, is there a way to allow site-wide caching, but force certain areas of a page to reload on each visit?

For example, if  on a specific page there is a huge navigational menu that never changes, a map that rarely changes, and hours of operation which change frequently (as often as holidays), is there a way to force only the hours of operation to reload when a person revisits the page?

-Wilhelmina Randtke