WordPress.org

Make WordPress Core


Ignore:
Timestamp:
12/13/2016 02:08:24 PM (3 years ago)
Author:
jnylen0
Message:

REST API: Add support for filename search in media endpoint.

In [38625], the functionality to search for attachments by filename was added
via the posts_clauses filter and the _filter_query_attachment_filenames()
function. This moves _filter_query_attachment_filenames() from
wp-admin/includes/post.php to wp-includes/post.php so that it can be
applied in the same manner in the REST API media endpoint.

Props jblz, tyxla.
Fixes #39092.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/post.php

    r39390 r39598  
    11531153
    11541154    return $q;
    1155 }
    1156 
    1157 /**
    1158  * Filter the SQL clauses of an attachment query to include filenames.
    1159  *
    1160  * @since 4.7.0
    1161  * @access private
    1162  *
    1163  * @global wpdb $wpdb WordPress database abstraction object.
    1164  *
    1165  * @param array $clauses An array including WHERE, GROUP BY, JOIN, ORDER BY,
    1166  *                       DISTINCT, fields (SELECT), and LIMITS clauses.
    1167  * @return array The modified clauses.
    1168  */
    1169 function _filter_query_attachment_filenames( $clauses ) {
    1170     global $wpdb;
    1171     remove_filter( 'posts_clauses', __FUNCTION__ );
    1172 
    1173     // Add a LEFT JOIN of the postmeta table so we don't trample existing JOINs.
    1174     $clauses['join'] .= " LEFT JOIN {$wpdb->postmeta} AS sq1 ON ( {$wpdb->posts}.ID = sq1.post_id AND sq1.meta_key = '_wp_attached_file' )";
    1175 
    1176     $clauses['groupby'] = "{$wpdb->posts}.ID";
    1177 
    1178     $clauses['where'] = preg_replace(
    1179         "/\({$wpdb->posts}.post_content (NOT LIKE|LIKE) (\'[^']+\')\)/",
    1180         "$0 OR ( sq1.meta_value $1 $2 )",
    1181         $clauses['where'] );
    1182 
    1183     return $clauses;
    11841155}
    11851156
Note: See TracChangeset for help on using the changeset viewer.