Skip to content

stephanedemotte/wp-rest-api-cache

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

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

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%