mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-06-28 22:30:04 +00:00
Prime users cache in WP_Query and post REST API controller.
For a call to `WP_Query` or a post REST API request that contains posts from multiple authors, call the `cache_users` function, to ensure that all user data for post authors is primed in a single database query. This results in far fewer database queries on multiple author sites. Props spacedmonkey, timothyblynjacobs, peterwilsoncc. Fixes #55716. git-svn-id: https://develop.svn.wordpress.org/trunk@53482 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -620,6 +620,39 @@ class Tests_Query extends WP_UnitTestCase {
|
||||
$this->assertSame( array( $p2 ), $q->posts );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 55716
|
||||
*/
|
||||
public function test_prime_user_cache() {
|
||||
$action = new MockAction();
|
||||
add_filter( 'update_user_metadata_cache', array( $action, 'filter' ), 10, 2 );
|
||||
$user_ids = array();
|
||||
$count = 5;
|
||||
for ( $i = 0; $i < $count; $i ++ ) {
|
||||
$user_ids[ $i ] = self::factory()->user->create();
|
||||
self::factory()->post->create(
|
||||
array(
|
||||
'post_type' => 'post',
|
||||
'post_author' => $user_ids[ $i ],
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$q = new WP_Query(
|
||||
array(
|
||||
'post_type' => 'post',
|
||||
'posts_per_page' => $count,
|
||||
)
|
||||
);
|
||||
while ( $q->have_posts() ) {
|
||||
$q->the_post();
|
||||
}
|
||||
|
||||
$args = $action->get_args();
|
||||
$last_args = end( $args );
|
||||
$this->assertSameSets( $user_ids, $last_args[1], 'Ensure that user ids are primed' );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 35601
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user