Make WordPress Core

Ticket #35762: 35762.2.diff

File 35762.2.diff, 2.4 KB (added by swissspidy, 9 years ago)
  • src/wp-includes/query.php

    diff --git src/wp-includes/query.php src/wp-includes/query.php
    index 053f4e9..18d83b7 100644
    class WP_Query { 
    21542154                        }
    21552155
    21562156                        $like = $n . $wpdb->esc_like( $term ) . $n;
    2157                         $search .= $wpdb->prepare( "{$searchand}(($wpdb->posts.post_title $like_op %s) $andor_op ($wpdb->posts.post_content $like_op %s))", $like, $like );
     2157                        $search .= $wpdb->prepare( "{$searchand}(($wpdb->posts.post_title $like_op %s) $andor_op ($wpdb->posts.post_content $like_op %s) $andor_op ($wpdb->posts.post_excerpt $like_op %s))", $like, $like, $like );
    21582158                        $searchand = ' AND ';
    21592159                }
    21602160
    class WP_Query { 
    22802280
    22812281                        // sentence match in 'post_content'
    22822282                        if ( $like ) {
    2283                                 $search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_content LIKE %s THEN 4 ", $like );
     2283                                $search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_excerpt LIKE %s THEN 4 ", $like );
     2284                                $search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_content LIKE %s THEN 5 ", $like );
    22842285                        }
    22852286
    22862287                        if ( $search_orderby ) {
  • tests/phpunit/tests/query/search.php

    diff --git tests/phpunit/tests/query/search.php tests/phpunit/tests/query/search.php
    index 859cd98..04efd73 100644
    class Tests_Query_Search extends WP_UnitTestCase { 
    178178                $this->assertNotContains( 'posts_search', $q->request );
    179179        }
    180180
     181        /**
     182         * @ticket 35762
     183         */
     184        public function test_search_post_excerpt() {
     185                $p1 = self::factory()->post->create( array(
     186                        'post_status' => 'publish',
     187                        'post_content' => 'This post has foo but also bar',
     188                ) );
     189                $p2 = self::factory()->post->create( array(
     190                        'post_status' => 'publish',
     191                        'post_content' => '',
     192                        'post_excerpt' => 'This post has only bar',
     193                ) );
     194                $p3 = self::factory()->post->create( array(
     195                        'post_status' => 'publish',
     196                        'post_content' => '',
     197                        'post_excerpt' => 'This post has only foo-bar',
     198                ) );
     199
     200                $q = new WP_Query( array(
     201                        's' => 'foo-bar',
     202                        'fields' => 'ids',
     203                ) );
     204
     205                $this->assertEqualSets( array( $p3 ), $q->posts );
     206
     207                $q = new WP_Query( array(
     208                        's' => 'bar',
     209                        'fields' => 'ids',
     210                ) );
     211
     212                $this->assertEqualSets( array( $p1, $p2, $p3 ), $q->posts );
     213
     214                $q = new WP_Query( array(
     215                        's' => 'foo bar',
     216                        'fields' => 'ids',
     217                ) );
     218
     219                $this->assertEqualSets( array( $p1, $p3 ), $q->posts );
     220        }
     221
    181222        public function filter_posts_search( $sql ) {
    182223                return $sql . ' /* posts_search */';
    183224        }