Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/airesvsg/wp-rest-api-cache

Enable caching for WordPress REST API and increase speed of your application
https://github.com/airesvsg/wp-rest-api-cache

api cache rest rest-api wordpress wp

Last synced: 4 days ago
JSON representation

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

Awesome Lists containing this project

README

        

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

- [Installation](#installation)
- [Filters](#filters)
- [How to use filters](#how-to-use-filters)

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**

```PHP
add_filter( 'rest_cache_headers', function( $headers ) {
$headers['Cache-Control'] = 'public, max-age=3600';

return $headers;
} );
```

- **changing the cache timeout**

```PHP
add_filter( 'rest_cache_timeout', function() {
// https://codex.wordpress.org/Transients_API#Using_Time_Constants
return 15 * DAY_IN_SECONDS;
} );
```
or
```PHP
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**

```PHP
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](http://airesgoncalves.com.br/screenshot/wp-rest-api-cache/readme/filter-admin-show.gif)

- **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.

```PHP
add_action( 'save_post', function( $post_id ) {
if ( class_exists( 'WP_REST_Cache' ) ) {
WP_REST_Cache::empty_cache();
}
} );
```