Make WordPress Core


Ignore:
Timestamp:
10/17/2022 11:17:38 AM (20 months ago)
Author:
audrasjb
Message:

Media: Refactor search by filename within the admin.

Props vortfu, xknown, peterwilsoncc, paulkevan.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-query.php

    r54496 r54524  
    445445     */
    446446    public $thumbnails_cached = false;
     447
     448    /**
     449     * Controls whether an attachment query should include filenames or not.
     450     *
     451     * @since 6.0.3
     452     * @var bool
     453     */
     454    protected $allow_query_attachment_by_filename = false;
    447455
    448456    /**
     
    14301438            }
    14311439
    1432             $like      = $n . $wpdb->esc_like( $term ) . $n;
    1433             $search   .= $wpdb->prepare( "{$searchand}(({$wpdb->posts}.post_title $like_op %s) $andor_op ({$wpdb->posts}.post_excerpt $like_op %s) $andor_op ({$wpdb->posts}.post_content $like_op %s))", $like, $like, $like );
     1440            $like = $n . $wpdb->esc_like( $term ) . $n;
     1441
     1442            if ( ! empty( $this->allow_query_attachment_by_filename ) ) {
     1443                $search .= $wpdb->prepare( "{$searchand}(({$wpdb->posts}.post_title $like_op %s) $andor_op ({$wpdb->posts}.post_excerpt $like_op %s) $andor_op ({$wpdb->posts}.post_content $like_op %s) $andor_op (sq1.meta_value $like_op %s))", $like, $like, $like, $like );
     1444            } else {
     1445                $search .= $wpdb->prepare( "{$searchand}(({$wpdb->posts}.post_title $like_op %s) $andor_op ({$wpdb->posts}.post_excerpt $like_op %s) $andor_op ({$wpdb->posts}.post_content $like_op %s))", $like, $like, $like );
     1446            }
    14341447            $searchand = ' AND ';
    14351448        }
     
    18261839        $q = $this->fill_query_vars( $q );
    18271840
     1841        /**
     1842         * Filters whether an attachment query should include filenames or not.
     1843         *
     1844         * @since 6.0.3
     1845         *
     1846         * @param bool $allow_query_attachment_by_filename Whether or not to include filenames.
     1847         */
     1848        $this->allow_query_attachment_by_filename = apply_filters( 'wp_allow_query_attachment_by_filename', false );
     1849        remove_all_filters( 'wp_allow_query_attachment_by_filename' );
     1850
    18281851        // Parse meta query.
    18291852        $this->meta_query = new WP_Meta_Query();
     
    22572280        }
    22582281
    2259         if ( ! empty( $this->tax_query->queries ) || ! empty( $this->meta_query->queries ) ) {
     2282        if ( ! empty( $this->tax_query->queries ) || ! empty( $this->meta_query->queries ) || ! empty( $this->allow_query_attachment_by_filename ) ) {
    22602283            $groupby = "{$wpdb->posts}.ID";
    22612284        }
     
    23332356        }
    23342357        $where .= $search . $whichauthor . $whichmimetype;
     2358
     2359        if ( ! empty( $this->allow_query_attachment_by_filename ) ) {
     2360            $join .= " LEFT JOIN {$wpdb->postmeta} AS sq1 ON ( {$wpdb->posts}.ID = sq1.post_id AND sq1.meta_key = '_wp_attached_file' )";
     2361        }
    23352362
    23362363        if ( ! empty( $this->meta_query->queries ) ) {
Note: See TracChangeset for help on using the changeset viewer.