Make WordPress Core


Ignore:
Timestamp:
12/21/2016 05:18:24 AM (8 years ago)
Author:
pento
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.

Merge of [39598] to the 4.7 branch.

Props jblz, tyxla.
Fixes #39092.

Location:
branches/4.7
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/4.7

  • branches/4.7/src/wp-includes/post.php

    r39507 r39629  
    61896189    return $post_name;
    61906190}
     6191
     6192/**
     6193 * Filter the SQL clauses of an attachment query to include filenames.
     6194 *
     6195 * @since 4.7.0
     6196 * @access private
     6197 *
     6198 * @global wpdb $wpdb WordPress database abstraction object.
     6199 *
     6200 * @param array $clauses An array including WHERE, GROUP BY, JOIN, ORDER BY,
     6201 *                       DISTINCT, fields (SELECT), and LIMITS clauses.
     6202 * @return array The modified clauses.
     6203 */
     6204function _filter_query_attachment_filenames( $clauses ) {
     6205    global $wpdb;
     6206    remove_filter( 'posts_clauses', __FUNCTION__ );
     6207
     6208    // Add a LEFT JOIN of the postmeta table so we don't trample existing JOINs.
     6209    $clauses['join'] .= " LEFT JOIN {$wpdb->postmeta} AS sq1 ON ( {$wpdb->posts}.ID = sq1.post_id AND sq1.meta_key = '_wp_attached_file' )";
     6210
     6211    $clauses['groupby'] = "{$wpdb->posts}.ID";
     6212
     6213    $clauses['where'] = preg_replace(
     6214        "/\({$wpdb->posts}.post_content (NOT LIKE|LIKE) (\'[^']+\')\)/",
     6215        "$0 OR ( sq1.meta_value $1 $2 )",
     6216        $clauses['where'] );
     6217
     6218    return $clauses;
     6219}
Note: See TracChangeset for help on using the changeset viewer.