Skip to content
Enable caching for WordPress REST API and increase speed of your application
Branch: master
Clone or download
Latest commit e93675a Feb 28, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
includes/admin initial commit May 21, 2016
class-wp-rest-cache.php adding rest_cache_headers filter Jun 3, 2016
composer.json update composer.json Feb 28, 2019
readme.md Readme / stripos syntax Feb 12, 2018
readme.txt Tested up to: 4.9.4 Mar 3, 2018

readme.md

WP REST API Cache

Enable caching for WordPress REST API and increase speed of your application

Installation

  1. Copy the wp-rest-api-cache folder into your wp-content/plugins folder
  2. Activate the WP REST API Cache plugin via the plugin admin page

Filters

Filter Argument(s)
rest_cache_headers array $headers
string $request_uri
WP_REST_Server $server
WP_REST_Request $request
rest_cache_skip boolean $skip ( default: WP_DEBUG )
string $request_uri
WP_REST_Server $server
WP_REST_Request $request
rest_cache_key string $request_uri
WP_REST_Server $server
WP_REST_Request $request
rest_cache_timeout int $timeout
int $length
int $period
rest_cache_update_options array $options
rest_cache_get_options array $options
rest_cache_show_admin boolean $show
rest_cache_show_admin_menu boolean $show
rest_cache_show_admin_bar_menu boolean $show

How to use filters

  • sending headers
add_filter( 'rest_cache_headers', function( $headers ) {
	$headers['Cache-Control'] = 'public, max-age=3600';
	
	return $headers;
} );
  • changing the cache timeout
add_filter( 'rest_cache_timeout', function() {
	// https://codex.wordpress.org/Transients_API#Using_Time_Constants
	return 15 * DAY_IN_SECONDS;
} );

or

add_filter( 'rest_cache_get_options', function( $options ) {
	if ( ! isset( $options['timeout'] ) ) {
		$options['timeout'] = array();
	}

	// https://codex.wordpress.org/Transients_API#Using_Time_Constants
	$options['timeout']['length'] = 15;
	$options['timeout']['period'] = DAY_IN_SECONDS;
	
	return $options;
} );
  • skipping cache
add_filter( 'rest_cache_skip', function( $skip, $request_uri ) {
	if ( ! $skip && false !== stripos( $request_uri, 'wp-json/acf/v2' ) ) {
		return true;
	}

	return $skip;
}, 10, 2 );
  • show / hide admin links

WP REST API Cache

  • empty cache on post-save

You can use the wordpress default filter "save_post" if you like to empty the cache on every save of a post, page or custom post type.

add_action( 'save_post', function( $post_id ) {
  if ( class_exists( 'WP_REST_Cache' ) ) {
    WP_REST_Cache::empty_cache();
  }
} );
You can’t perform that action at this time.