wp_cache_set( int|string $key, mixed $data, string $group = , int $expire ): bool

Saves the data to the cache.

Description

Differs from wp_cache_add() and wp_cache_replace() in that it will always write data.

See also

Parameters

$keyint|stringrequired
The cache key to use for retrieval later.
$datamixedrequired
The contents to store in the cache.
$groupstringoptional
Where to group the cache contents. Enables the same key to be used across groups.

Default:''

$expireintoptional
When to expire the cache contents, in seconds.
Default 0 (no expiration).

Return

bool True on success, false on failure.

Source

function wp_cache_set( $key, $data, $group = '', $expire = 0 ) {
	global $wp_object_cache;

	return $wp_object_cache->set( $key, $data, $group, (int) $expire );
}

Changelog

VersionDescription
2.0.0Introduced.

User Contributed Notes

  1. Skip to note 3 content
    function prefix_get_post_count( $post_status = 'publish' ) {
        $cache_key = 'prefix_post_count_'. $post_status;
        $_posts = wp_cache_get( $cache_key );
        if ( false === $_posts ) {
            $_posts = $wpdb->get_var(
                        $wpdb->prepare(
                            "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = 'post' AND post_status = %s",
                            $post_status
                        ));
     
            wp_cache_set( $cache_key, $_posts );
        }
     
        return $_posts;
    }
  2. Skip to note 4 content

    Requests made to third-party endpoints should be cached, regardless of being synchronous or asynchronous. Not doing so will result in your site’s load time depending on an unreliable API response!

    /**
     * Retrieve posts from another blog and cache the response body.
     *
     * @return   string   Body of the response. Empty string if no body or incorrect parameter given.
     */
    function wpdocs_get_posts_from_other_blog() {
        $posts = wp_cache_get( 'wpdocs_other_blog_posts' );
        
        if ( false === $posts ) {
            $request = wp_remote_get( 'https://jsonplaceholder.typicode.com/posts' );
            $posts = wp_remote_retrieve_body( $request );
    
            wp_cache_set( 'wpdocs_other_blog_posts', $posts, '', HOUR_IN_SECONDS );
        }
    
        return $posts;
    }

You must log in before being able to contribute a note or feedback.