Ticket #35762: 35762.2.diff
File 35762.2.diff, 2.4 KB (added by , 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 { 2154 2154 } 2155 2155 2156 2156 $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 ); 2158 2158 $searchand = ' AND '; 2159 2159 } 2160 2160 … … class WP_Query { 2280 2280 2281 2281 // sentence match in 'post_content' 2282 2282 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 ); 2284 2285 } 2285 2286 2286 2287 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 { 178 178 $this->assertNotContains( 'posts_search', $q->request ); 179 179 } 180 180 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 181 222 public function filter_posts_search( $sql ) { 182 223 return $sql . ' /* posts_search */'; 183 224 }