Home

Awesome

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

FilterArgument(s)
rest_cache_headersarray $headers<br>string $request_uri<br>WP_REST_Server $server<br>WP_REST_Request $request
rest_cache_skipboolean $skip ( default: WP_DEBUG )<br>string $request_uri<br>WP_REST_Server $server<br>WP_REST_Request $request
rest_cache_keystring $request_uri<br>WP_REST_Server $server<br>WP_REST_Request $request
rest_cache_timeoutint $timeout<br>int $length<br>int $period
rest_cache_update_optionsarray $options
rest_cache_get_optionsarray $options
rest_cache_show_adminboolean $show
rest_cache_show_admin_menuboolean $show
rest_cache_show_admin_bar_menuboolean $show

How to use filters

add_filter( 'rest_cache_headers', function( $headers ) {
	$headers['Cache-Control'] = 'public, max-age=3600';
	
	return $headers;
} );
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;
} );
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 );

WP REST API Cache

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();
  }
} );