-
-
Save westonruter/5475349 to your computer and use it in GitHub Desktop.
WordPress Fragment Caching convenience wrapper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Usage: | |
cache_fragment_output( 'unique-key', 3600, function () { | |
functions_that_do_stuff_live(); | |
these_should_echo(); | |
}); | |
*/ | |
function cache_fragment_output( $key, $ttl, $function ) { | |
$group = 'fragment-cache'; | |
$output = wp_cache_get( $key, $group ); | |
if ( empty($output) ) { | |
ob_start(); | |
call_user_func( $function ); | |
$output = ob_get_clean(); | |
wp_cache_add( $key, $output, $group, $ttl ); | |
} | |
echo $output; | |
} |
Two reasons I didn't do it this way (I feel like I've said this before, but maybe it was to someone else):
- Requires PHP 5.3 — I wanted "runs on any WordPress install" code.
- Would likely require re-working the output code, if there is any reliance on global variables. I wanted something I could wrap around some random theme code and know that it would work every time.
But I agree that this is cleaner.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Context:
http://markjaquith.wordpress.com/2013/04/26/fragment-caching-in-wordpress/
https://twitter.com/markjaquith/status/327768538179850241
https://twitter.com/westonruter/status/328316084941901824