diff --git a/wp-includes/cache-compat.php b/wp-includes/cache-compat.php index d25017f2a1..3f3df630e9 100644 --- a/wp-includes/cache-compat.php +++ b/wp-includes/cache-compat.php @@ -35,3 +35,86 @@ if ( ! function_exists( 'wp_cache_get_multiple' ) ) : return $values; } endif; + +if ( ! function_exists( 'wp_cache_delete_multiple' ) ) : + /** + * Delete multiple values from the cache in one call. + * + * Compat function to mimic wp_cache_delete_multiple(). + * + * @ignore + * @since 6.0.0 + * + * @see wp_cache_delete_multiple() + * + * @param array $keys Array of keys under which the cache to deleted. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @return array Array of return values. + */ + function wp_cache_delete_multiple( array $keys, $group = '' ) { + $values = array(); + + foreach ( $keys as $key ) { + $values[ $key ] = wp_cache_delete( $key, $group ); + } + + return $values; + } +endif; + + +if ( ! function_exists( 'wp_cache_add_multiple' ) ) : + /** + * Add multiple values to the cache in one call, if the cache keys doesn't already exist. + * + * Compat function to mimic wp_cache_add_multiple(). + * + * @ignore + * @since 6.0.0 + * + * @see wp_cache_add_multiple() + * + * @param array $data Array of key and value to be added. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. Default 0 (no expiration). + * @return array Array of return values. + */ + function wp_cache_add_multiple( array $data, $group = '', $expire = 0 ) { + $values = array(); + + foreach ( $data as $key => $value ) { + $values[ $key ] = wp_cache_add( $key, $value, $group, $expire ); + } + + return $values; + } +endif; + +if ( ! function_exists( 'wp_cache_set_multiple' ) ) : + /** + * Set multiple values to the cache in one call. + * + * Differs from wp_cache_add_multiple() in that it will always write data. + * + * Compat function to mimic wp_cache_set_multiple(). + * + * @ignore + * @since 6.0.0 + * + * @see wp_cache_set_multiple() + * + * @param array $data Array of key and value to be set. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. Default 0 (no expiration). + * @return array Array of return values. + */ + function wp_cache_set_multiple( array $data, $group = '', $expire = 0 ) { + $values = array(); + + foreach ( $data as $key => $value ) { + $values[ $key ] = wp_cache_set( $key, $value, $group, $expire ); + } + + return $values; + } +endif; diff --git a/wp-includes/cache.php b/wp-includes/cache.php index 7fa44ca9db..b9ffe96219 100644 --- a/wp-includes/cache.php +++ b/wp-includes/cache.php @@ -145,6 +145,65 @@ function wp_cache_get_multiple( $keys, $group = '', $force = false ) { return $wp_object_cache->get_multiple( $keys, $group, $force ); } + +/** + * Delete multiple values from the cache in one call. + * + * @since 6.0.0 + * + * @see WP_Object_Cache::delete_multiple() + * @global WP_Object_Cache $wp_object_cache Object cache global instance. + * + * @param array $keys Array of keys under which the cache to deleted. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @return array Array of return values organized into groups. + */ +function wp_cache_delete_multiple( array $keys, $group = '' ) { + global $wp_object_cache; + + return $wp_object_cache->delete_multiple( $keys, $group ); +} + +/** + * Add multiple values to the cache in one call. + * + * @since 6.0.0 + * + * @see WP_Object_Cache::add_multiple() + * @global WP_Object_Cache $wp_object_cache Object cache global instance. + * + * @param array $data Array of key and value to be set. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. + * Default 0 (no expiration). + * @return array Array of return values. + */ +function wp_cache_add_multiple( array $data, $group = '', $expire = 0 ) { + global $wp_object_cache; + + return $wp_object_cache->add_multiple( $data, $group, $expire ); +} + +/** + * Set multiple values to the cache in one call. + * + * @since 6.0.0 + * + * @see WP_Object_Cache::set_multiple() + * @global WP_Object_Cache $wp_object_cache Object cache global instance. + * + * @param array $data Array of key and value to be set. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. + * Default 0 (no expiration). + * @return array Array of return values. + */ +function wp_cache_set_multiple( array $data, $group = '', $expire = 0 ) { + global $wp_object_cache; + + return $wp_object_cache->set_multiple( $data, $group, $expire ); +} + /** * Increment numeric cache item's value * diff --git a/wp-includes/class-wp-object-cache.php b/wp-includes/class-wp-object-cache.php index 37c474c3c5..920ec5e4da 100644 --- a/wp-includes/class-wp-object-cache.php +++ b/wp-includes/class-wp-object-cache.php @@ -323,6 +323,65 @@ class WP_Object_Cache { return $values; } + /** + * Delete multiple values from the cache in one call. + * + * @since 6.0.0 + * + * @param array $keys Array of keys to be deleted. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @return array Array of return values. + */ + public function delete_multiple( array $keys, $group = '' ) { + $values = array(); + + foreach ( $keys as $key ) { + $values[ $key ] = $this->delete( $key, $group ); + } + + return $values; + } + + /** + * Add multiple values to the cache in one call. + * + * @since 6.0.0 + * + * @param array $data Array of key and value to be added. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. Default 0 (no expiration). + * @return array Array of return values. + */ + public function add_multiple( array $data, $group = '', $expire = 0 ) { + $values = array(); + + foreach ( $data as $key => $value ) { + $values[ $key ] = $this->add( $key, $value, $group, $expire ); + } + + return $values; + } + + /** + * Set multiple values to the cache in one call. + * + * @since 6.0.0 + * + * @param array $data Array of key and value to be set. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. Default 0 (no expiration). + * @return array Array of return values. + */ + public function set_multiple( array $data, $group = '', $expire = 0 ) { + $values = array(); + + foreach ( $data as $key => $value ) { + $values[ $key ] = $this->set( $key, $value, $group, $expire ); + } + + return $values; + } + /** * Increments numeric cache item's value. * diff --git a/wp-includes/version.php b/wp-includes/version.php index 157726951f..edcadd7361 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.0-alpha-52699'; +$wp_version = '6.0-alpha-52700'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.