Make WordPress Core

Ticket #35361: 35361.diff

File 35361.diff, 1.4 KB (added by boonebgorges, 9 years ago)
  • src/wp-includes/query.php

    diff --git src/wp-includes/query.php src/wp-includes/query.php
    index d53ec42..3703428 100644
    class WP_Query { 
    22682268                                $like = '%' . $wpdb->esc_like( $q['s'] ) . '%';
    22692269                        }
    22702270
    2271                         $search_orderby = '(CASE ';
     2271                        $search_orderby = '';
    22722272
    22732273                        // sentence match in 'post_title'
    22742274                        if ( $like ) {
    class WP_Query { 
    22892289                        if ( $like ) {
    22902290                                $search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_content LIKE %s THEN 4 ", $like );
    22912291                        }
    2292                         $search_orderby .= 'ELSE 5 END)';
     2292
     2293                        if ( $search_orderby ) {
     2294                                $search_orderby = '(CASE ' . $search_orderby . 'ELSE 5 END)';
     2295                        }
    22932296                } else {
    22942297                        // single word or sentence search
    22952298                        $search_orderby = reset( $q['search_orderby_title'] ) . ' DESC';
  • tests/phpunit/tests/query/search.php

    diff --git tests/phpunit/tests/query/search.php tests/phpunit/tests/query/search.php
    index caf862c..5fe6d5e 100644
    class Tests_Query_Search extends WP_UnitTestCase { 
    125125
    126126                $this->assertEqualSets( array( $p3 ), $q->posts );
    127127        }
     128
     129        /**
     130         * @ticket 35361
     131         */
     132        public function test_search_orderby_should_be_empty_when_search_string_is_longer_than_6_words_and_exclusion_operator_is_used() {
     133                $q = new WP_Query( array(
     134                        's' => 'foo1 foo2 foo3 foo4 foo5 foo6 foo7 -bar',
     135                        'fields' => 'ids',
     136                ) );
     137
     138                $this->assertNotRegExp( '|ORDER BY \(CASE[^\)]+\)|', $q->request );
     139        }
    128140}