Cache: Add wp_cache_*_multiple functions.

Add new caching functions named `wp_cache_add_multiple`, `wp_cache_set_multiple` and `wp_cache_delete_multiple`. All of these functions allow for an array of data to be passed, so that multiple cache objects can be created / edited / deleted in a single function call. This follows on from [47938] where the `wp_cache_get_multiple` function was introduced and allowed for multiple cache objects to be received in one call. 

Props: spacedmonkey, tillkruess, adamsilverstein, flixos90, mitogh, pbearne. 
Fixes: #54574.


git-svn-id: https://develop.svn.wordpress.org/trunk@52700 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jonny Harris
2022-02-11 12:50:54 +00:00
parent af07f6af4b
commit 4689322d44
5 changed files with 285 additions and 0 deletions

View File

@@ -349,4 +349,74 @@ class Tests_Cache extends WP_UnitTestCase {
$this->assertSame( $expected, $found );
}
/**
* @ticket 54574
*/
public function test_wp_cache_add_multiple() {
$found = wp_cache_add_multiple(
array(
'foo1' => 'bar',
'foo2' => 'bar',
'foo3' => 'bar',
),
'group1'
);
$expected = array(
'foo1' => true,
'foo2' => true,
'foo3' => true,
);
$this->assertSame( $expected, $found );
}
/**
* @ticket 54574
*/
public function test_wp_cache_set_multiple() {
wp_cache_set( 'foo1', 'bar', 'group1' );
wp_cache_set( 'foo2', 'bar', 'group1' );
wp_cache_set( 'foo3', 'bar', 'group2' );
$found = wp_cache_set_multiple(
array(
'foo1' => 'bar',
'foo2' => 'bar',
'foo3' => 'bar',
),
'group1'
);
$expected = array(
'foo1' => true,
'foo2' => true,
'foo3' => true,
);
$this->assertSame( $expected, $found );
}
/**
* @ticket 54574
*/
public function test_wp_cache_delete_multiple() {
wp_cache_set( 'foo1', 'bar', 'group1' );
wp_cache_set( 'foo2', 'bar', 'group1' );
wp_cache_set( 'foo3', 'bar', 'group2' );
$found = wp_cache_delete_multiple(
array( 'foo1', 'foo2', 'foo3' ),
'group1'
);
$expected = array(
'foo1' => true,
'foo2' => true,
'foo3' => false,
);
$this->assertSame( $expected, $found );
}
}