Make WordPress Core

Ticket #7394: basic.7394.diff

File basic.7394.diff, 1.4 KB (added by scribu, 14 years ago)
  • wp-includes/query.php

     
    21482148                                preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $q['s'], $matches);
    21492149                                $q['search_terms'] = array_map('_search_terms_tidy', $matches[0]);
    21502150                        }
     2151                        $q['search_terms'] = array_filter( (array) $q['search_terms'] );
     2152
    21512153                        $n = !empty($q['exact']) ? '' : '%';
    21522154                        $searchand = '';
    2153                         foreach( (array) $q['search_terms'] as $term ) {
     2155                        foreach ( $q['search_terms'] as $term ) {
    21542156                                $term = esc_sql( like_escape( $term ) );
    21552157                                $search .= "{$searchand}(($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}'))";
    21562158                                $searchand = ' AND ';
     
    23452347                        if ( empty($q['orderby']) )
    23462348                                $q['orderby'] = "$wpdb->posts.post_date ".$q['order'];
    23472349                }
     2350               
     2351                // Order search results by relevance
     2352                if ( !empty( $q['search_terms'] ) && empty( $q['exact'] ) ) {
     2353                        $orderby_search = array();
     2354                        foreach ( $q['search_terms'] as $term ) {
     2355                                $term = esc_sql( like_escape( $term ) );
     2356                                $orderby_search[] = "$wpdb->posts.post_title LIKE '%$term%'";
     2357                        }
     2358                        $orderby_search = implode( ' OR ', $orderby_search );
    23482359
     2360                        $q['orderby'] = "($orderby_search) DESC, " . $q['orderby'];
     2361                }
     2362
    23492363                if ( is_array( $post_type ) ) {
    23502364                        $post_type_cap = 'multiple_post_type';
    23512365                } else {