Skip to content

Instantly share code, notes, and snippets.

@entr
Forked from markjaquith/gist:2653957
Last active October 28, 2015 09:39
Show Gist options
  • Save entr/4e33f9a81ee3e90c079d to your computer and use it in GitHub Desktop.
Save entr/4e33f9a81ee3e90c079d to your computer and use it in GitHub Desktop.
WordPress Fragment Caching convenience wrapper
<?php
/**
* WordPress Fragment Caching convenience wrapper.
*
* @author Mark Jaquith, packed by WPTailor
*/
defined('ABSPATH') or exit;
/*
Usage:
$frag = new CWS_Fragment_Cache( 'unique-key', 3600 ); // Second param is TTL
if ( !$frag->output() ) { // NOTE, testing for a return of false
functions_that_do_stuff_live();
these_should_echo();
// IMPORTANT
$frag->store();
// YOU CANNOT FORGET THIS. If you do, the site will break.
}
*/
class CWS_Fragment_Cache {
const GROUP = 'cws-fragments';
var $key;
var $ttl;
public function __construct( $key, $ttl ) {
$this->key = $key;
$this->ttl = $ttl;
}
public function output() {
$output = wp_cache_get( $this->key, self::GROUP );
if ( !empty( $output ) ) {
// It was in the cache
echo $output;
return true;
} else {
ob_start();
return false;
}
}
public function store() {
$output = ob_get_flush(); // Flushes the buffers
wp_cache_add( $this->key, $output, self::GROUP, $this->ttl );
}
}
{
"name": "markjaquith/cws-fragment-cache",
"description": "WordPress Fragment Caching convenience wrapper",
"require": {
"johnpbloch/wordpress": ">=3.0.0"
},
"license": "GPL-2.0+",
"authors": [
{
"name": "Mark Jaquith",
"email": "mark@jaquith.me"
},
{
"name": "WPTailor",
"email": "info@wptailor.com"
}
],
"minimum-stability": "dev",
"autoload": {
"files": ["class-cws-fragment-cache.php"]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment