WordPress.org

Make WordPress Core

Ticket #40228: 40228.improved-caching.2.diff

File 40228.improved-caching.2.diff, 1.3 KB (added by spacedmonkey, 23 months ago)
  • src/wp-includes/ms-blogs.php

     
    462462                }
    463463        }
    464464
    465         switch ( $field ) {
    466                 case 'id':
    467                         if ( ! is_numeric( $value ) ) {
     465        if ( 'id' === $field ) {
     466                if ( ! is_numeric( $value ) ) {
     467                        return null;
     468                }
     469                $site = get_site( $value );
     470                if ( $network_id && $site ) {
     471                        if ( $network_id != $site->network_id ) {
    468472                                return null;
    469473                        }
    470                         $args['site__in'][] = intval( $value );
    471                         break;
     474                }
     475
     476                return $site;
     477        }
     478
     479        switch ( $field ) {
    472480                case 'slug':
    473481                        $network = get_network( $network_id );
    474482                        if ( ! $network ) {
     
    538546
    539547        $args['number'] = 1;
    540548
    541         $sites = get_sites( $args );
     549        if ( $field == 'url' || $field == 'domain' ) {
     550
     551                $value     = str_replace( array( 'https://', 'http://' ), '', $value );
     552                $cache_key = md5( $value );
     553                $blog      = wp_cache_get( $cache_key, 'blog-lookup' );
     554
     555                if ( false !== $blog ) {
     556                        return $blog;
     557                }
     558        }
    542559
     560        $sites = get_sites( $args );
    543561        if ( empty( $sites ) ) {
    544                 return null;
     562                $site = null;
     563        } else {
     564                $site = array_shift( $sites );
     565        }
     566        if ( $field == 'url' || $field == 'domain' ) {
     567                wp_cache_add( $cache_key, $site, 'blog-lookup' );
    545568        }
    546569
    547         return array_shift( $sites );
     570        return $site;
    548571}
    549572
    550573/**