diff --git a/src/wp-includes/class-wp-site-query.php b/src/wp-includes/class-wp-site-query.php index 1a4df65d99..af227c572e 100644 --- a/src/wp-includes/class-wp-site-query.php +++ b/src/wp-includes/class-wp-site-query.php @@ -345,8 +345,8 @@ class WP_Site_Query { // $args can include anything. Only use the args defined in the query_var_defaults to compute the key. $_args = wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) ); - // Ignore the $fields argument as the queried result will be the same regardless. - unset( $_args['fields'] ); + // Ignore the $fields, $update_site_cache, $update_site_meta_cache argument as the queried result will be the same regardless. + unset( $_args['fields'], $_args['update_site_cache'], $_args['update_site_meta_cache'] ); $key = md5( serialize( $_args ) ); $last_changed = wp_cache_get_last_changed( 'sites' ); diff --git a/tests/phpunit/tests/multisite/wpSiteQuery.php b/tests/phpunit/tests/multisite/wpSiteQuery.php index f48667f23f..8d1d84c1f0 100644 --- a/tests/phpunit/tests/multisite/wpSiteQuery.php +++ b/tests/phpunit/tests/multisite/wpSiteQuery.php @@ -849,7 +849,7 @@ if ( is_multisite() ) : ) ); - $number_of_queries = $wpdb->num_queries; + $number_of_queries = get_num_queries(); $query_2 = $q->query( array( @@ -863,6 +863,70 @@ if ( is_multisite() ) : $this->assertSame( $number_of_queries + 1, $wpdb->num_queries ); } + /** + * @ticket 55462 + */ + public function test_wp_site_query_cache_with_same_fields_same_cache_fields() { + $q = new WP_Site_Query(); + + $query_1 = $q->query( + array( + 'fields' => 'ids', + 'network_id' => self::$network_ids['wordpress.org/'], + 'number' => 3, + 'order' => 'ASC', + 'update_site_cache' => true, + 'update_site_meta_cache' => true, + ) + ); + + $number_of_queries = get_num_queries(); + + $query_2 = $q->query( + array( + 'fields' => 'ids', + 'network_id' => self::$network_ids['wordpress.org/'], + 'number' => 3, + 'order' => 'ASC', + 'update_site_cache' => true, + 'update_site_meta_cache' => true, + ) + ); + $this->assertSame( $number_of_queries, get_num_queries() ); + } + + /** + * @ticket 55462 + */ + public function test_wp_site_query_cache_with_same_fields_different_cache_fields() { + $q = new WP_Site_Query(); + + $query_1 = $q->query( + array( + 'fields' => 'ids', + 'network_id' => self::$network_ids['wordpress.org/'], + 'number' => 3, + 'order' => 'ASC', + 'update_site_cache' => true, + 'update_site_meta_cache' => true, + ) + ); + + $number_of_queries = get_num_queries(); + + $query_2 = $q->query( + array( + 'fields' => 'ids', + 'network_id' => self::$network_ids['wordpress.org/'], + 'number' => 3, + 'order' => 'ASC', + 'update_site_cache' => false, + 'update_site_meta_cache' => false, + ) + ); + $this->assertSame( $number_of_queries, get_num_queries() ); + } + /** * @ticket 40229 * @dataProvider data_wp_site_query_meta_query