WordPress.org

Make WordPress Core

Ticket #21837: 21837.2.diff

File 21837.2.diff, 2.1 KB (added by johnjamesjacoby, 5 years ago)

Kinda terrible, but closer to what I expect to happen

  • src/wp-admin/includes/class-wp-ms-sites-list-table.php

    diff --git a/src/wp-admin/includes/class-wp-ms-sites-list-table.php b/src/wp-admin/includes/class-wp-ms-sites-list-table.php
    index 34436a7..eaaca9a 100644
    a b  
    115115                } else {
    116116                        if ( is_numeric($s) && empty( $wild ) ) {
    117117                                $query .= $wpdb->prepare( " AND ( {$wpdb->blogs}.blog_id = %s )", $s );
    118                         } elseif ( is_subdomain_install() ) {
    119                                 $blog_s = str_replace( '.' . $current_site->domain, '', $s );
    120                                 $blog_s = $wpdb->esc_like( $blog_s ) . $wild . $wpdb->esc_like( '.' . $current_site->domain );
    121                                 $query .= $wpdb->prepare( " AND ( {$wpdb->blogs}.domain LIKE %s ) ", $blog_s );
    122118                        } else {
    123                                 if ( $s != trim('/', $current_site->path) ) {
    124                                         $blog_s = $wpdb->esc_like( $current_site->path . $s ) . $wild . $wpdb->esc_like( '/' );
     119                                if ( '%' === $wild ) {
     120                                        $blog_s = str_replace( '.' . $current_site->domain, '', $s );
     121                                        $blog_s = $wild . $wpdb->esc_like( $blog_s ) . $wild;
     122                                        $query .= $wpdb->prepare( " AND ( {$wpdb->blogs}.domain LIKE %s ) OR ( {$wpdb->blogs}.path LIKE %s )", $blog_s, $blog_s );
    125123                                } else {
    126                                         $blog_s = $wpdb->esc_like( $s );
     124                                        $has_dot   = false !== strpos( $s, '.' );
     125                                        $has_slash = false !== strpos( $s, '/' );
     126
     127                                        // Searching domain & path
     128                                        if ( $has_dot && $has_slash ) {
     129                                                $pos    = strpos( $s, '/' );
     130                                                $domain = substr( $s, 0, $pos );
     131                                                $path   = substr( $s, $pos, strlen( $s ) );
     132                                                $query .= $wpdb->prepare( " AND ( {$wpdb->blogs}.domain LIKE %s ) AND ( {$wpdb->blogs}.path LIKE %s )", $domain, $path );
     133
     134                                        // Searching paths
     135                                        } elseif ( $has_slash ) {
     136                                                $blog_s = $wild . $wpdb->esc_like( $s ) . $wild;
     137                                                $query .= $wpdb->prepare( " AND ( {$wpdb->blogs}.path LIKE %s )", $blog_s );
     138
     139                                        // Searching domains
     140                                        } elseif ( $has_dot ) {
     141                                                $blog_s = $wild . $wpdb->esc_like( $s ) . $wild;
     142                                                $query .= $wpdb->prepare( " AND ( {$wpdb->blogs}.domain LIKE %s )", $blog_s );
     143                                        }
    127144                                }
    128                                 $query .= $wpdb->prepare( " AND  ( {$wpdb->blogs}.path LIKE %s )", $blog_s );
    129145                        }
    130146                }