Ticket #22744: 22744.13.diff
File 22744.13.diff, 4.2 KB (added by , 8 years ago) |
---|
-
src/wp-admin/includes/ajax-actions.php
diff --git src/wp-admin/includes/ajax-actions.php src/wp-admin/includes/ajax-actions.php index 1f6d7aa..739b48a 100644
function wp_ajax_query_attachments() { 2401 2401 $query['post_status'] .= ',private'; 2402 2402 2403 2403 // Filter query clauses to include filenames. 2404 add_filter( 'posts_clauses', '_filter_query_attachment_filenames' ); 2404 if ( isset( $query['s'] ) ) { 2405 add_filter( 'posts_clauses', '_filter_query_attachment_filenames' ); 2406 } 2405 2407 2406 2408 /** 2407 2409 * Filters the arguments passed to WP_Query during an Ajax -
src/wp-admin/includes/post.php
diff --git src/wp-admin/includes/post.php src/wp-admin/includes/post.php index b12aa5d..c352cbc 100644
function wp_edit_attachments_query_vars( $q = false ) { 1145 1145 } 1146 1146 1147 1147 // Filter query clauses to include filenames. 1148 add_filter( 'posts_clauses', '_filter_query_attachment_filenames' ); 1148 if ( isset( $q['s'] ) ) { 1149 add_filter( 'posts_clauses', '_filter_query_attachment_filenames' ); 1150 } 1149 1151 1150 1152 return $q; 1151 1153 } … … function _filter_query_attachment_filenames( $clauses ) { 1164 1166 global $wpdb; 1165 1167 remove_filter( 'posts_clauses', __FUNCTION__ ); 1166 1168 1167 $clauses['join'] = " INNER JOIN {$wpdb->postmeta} ON ( {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id )"; 1169 // Add a LEFT JOIN of the postmeta table so we don't trample existing JOINs. 1170 $clauses['join'] .= " LEFT JOIN {$wpdb->postmeta} AS sq1 ON ( {$wpdb->posts}.ID = sq1.post_id AND sq1.meta_key = '_wp_attached_file' )"; 1171 1168 1172 $clauses['groupby'] = "{$wpdb->posts}.ID"; 1169 1173 1170 1174 $clauses['where'] = preg_replace( 1171 1175 "/\({$wpdb->posts}.post_content (NOT LIKE|LIKE) (\'[^']+\')\)/", 1172 "$0 OR ( {$wpdb->postmeta}.meta_key = '_wp_attached_file' AND {$wpdb->postmeta}.meta_value $1 $2 )",1176 "$0 OR ( sq1.meta_value $1 $2 )", 1173 1177 $clauses['where'] ); 1174 1178 1175 1179 return $clauses; -
tests/phpunit/tests/query/search.php
diff --git tests/phpunit/tests/query/search.php tests/phpunit/tests/query/search.php index d0a34a6..b8087d5 100644
class Tests_Query_Search extends WP_UnitTestCase { 384 384 $this->assertNotEquals( array( $attachment ), $q->posts ); 385 385 } 386 386 387 /** 388 * @ticket 22744 389 */ 390 public function test_include_file_names_in_attachment_search_with_meta_query() { 391 $attachment = self::factory()->post->create( array( 392 'post_type' => 'attachment', 393 'post_status' => 'publish', 394 'post_title' => 'bar foo', 395 'post_content' => 'foo bar', 396 'post_excerpt' => 'This post has foo', 397 ) ); 398 399 add_post_meta( $attachment, '_wp_attached_file', 'some-image4.png', true ); 400 add_post_meta( $attachment, '_test_meta_key', 'value', true ); 401 add_filter( 'posts_clauses', '_filter_query_attachment_filenames' ); 402 403 // Pass post_type a string value. 404 $q = new WP_Query( array( 405 's' => 'image4', 406 'fields' => 'ids', 407 'post_type' => 'attachment', 408 'post_status' => 'inherit', 409 'meta_query' => array( 410 array( 411 'key' => '_test_meta_key', 412 'value' => 'value', 413 'compare' => '=', 414 ), 415 ), 416 ) ); 417 418 $this->assertSame( array( $attachment ), $q->posts ); 419 } 420 421 /** 422 * @ticket 22744 423 */ 424 public function test_include_file_names_in_attachment_search_with_tax_query() { 425 $attachment = self::factory()->post->create( array( 426 'post_type' => 'attachment', 427 'post_status' => 'publish', 428 'post_title' => 'bar foo', 429 'post_content' => 'foo bar', 430 'post_excerpt' => 'This post has foo', 431 ) ); 432 433 // Add a tag to the post. 434 wp_set_post_terms( $attachment, 'test', 'post_tag' ); 435 436 add_post_meta( $attachment, '_wp_attached_file', 'some-image5.png', true ); 437 add_filter( 'posts_clauses', '_filter_query_attachment_filenames' ); 438 439 // Pass post_type a string value. 440 $q = new WP_Query( array( 441 's' => 'image5', 442 'fields' => 'ids', 443 'post_type' => 'attachment', 444 'post_status' => 'inherit', 445 'tax_query' => array( 446 array( 447 'taxonomy' => 'post_tag', 448 'field' => 'slug', 449 'terms' => 'test', 450 ), 451 ), 452 ) ); 453 454 $this->assertSame( array( $attachment ), $q->posts ); 455 } 456 387 457 public function filter_posts_search( $sql ) { 388 458 return $sql . ' /* posts_search */'; 389 459 }