Make WordPress Core

Ticket #41197: 41197.diff

File 41197.diff, 2.1 KB (added by spacedmonkey, 8 years ago)
  • src/wp-includes/class-wp-site-query.php

     
    250250                 */
    251251                do_action_ref_array( 'pre_get_sites', array( &$this ) );
    252252
     253                $_args = wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) );
     254                if ( ! $_args['count'] ) {
     255                        unset( $_args['fields'] );
     256                }
     257
    253258                // $args can include anything. Only use the args defined in the query_var_defaults to compute the key.
    254                 $key = md5( serialize( wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) ) ) );
     259                $key = md5( serialize( $_args ) );
    255260                $last_changed = wp_cache_get_last_changed( 'sites' );
    256261
    257262                $cache_key = "get_sites:$key:$last_changed";
  • tests/phpunit/tests/multisite/siteQuery.php

     
    163163                $this->assertEqualSets( $expected, $found );
    164164        }
    165165
     166        public function test_wp_site_query_cache() {
     167                global $wpdb;
     168                $q                 = new WP_Site_Query();
     169                $query_1           = $q->query( array(
     170                        'fields'     => 'all',
     171                        'network_id' => self::$network_ids['wordpress.org/'],
     172                        'number'     => 3,
     173                        'order'      => 'ASC',
     174                ) );
     175                $number_of_queries = $wpdb->num_queries;
     176
     177                $query_2 = $q->query( array(
     178                        'fields'     => 'ids',
     179                        'network_id' => self::$network_ids['wordpress.org/'],
     180                        'number'     => 3,
     181                        'order'      => 'ASC',
     182                ) );
     183
     184                $this->assertEquals( $number_of_queries, $wpdb->num_queries );
     185
     186                $query_3 = $q->query( array(
     187                        'fields'     => 'ids',
     188                        'network_id' => self::$network_ids['wordpress.org/'],
     189                        'number'     => 3,
     190                        'order'      => 'ASC',
     191                        'count'      => true,
     192                ) );
     193                $this->assertEquals( $number_of_queries + 1, $wpdb->num_queries );
     194        }
     195
    166196        public function test_wp_site_query_by_network_id_with_order() {
    167197                $q = new WP_Site_Query();
    168198                $found = $q->query( array(