WordPress.org

Make WordPress Core

Ticket #30584: 30584.diff

File 30584.diff, 5.5 KB (added by wonderboymusic, 7 years ago)
  • src/wp-admin/includes/ajax-actions.php

     
    21592159                wp_send_json_error();
    21602160
    21612161        $query = isset( $_REQUEST['query'] ) ? (array) $_REQUEST['query'] : array();
    2162         $query = array_intersect_key( $query, array_flip( array(
     2162        $keys = array(
    21632163                's', 'order', 'orderby', 'posts_per_page', 'paged', 'post_mime_type',
    21642164                'post_parent', 'post__in', 'post__not_in', 'year', 'monthnum'
    2165         ) ) );
     2165        );
     2166        foreach ( get_taxonomies_for_attachments( 'objects' ) as $t ) {
     2167                if ( $t->query_var && isset( $query[ $t->query_var ] ) ) {
     2168                        $keys[] = $t->query_var;
     2169                }
     2170        }
    21662171
     2172        $query = array_intersect_key( $query, array_flip( $keys ) );
    21672173        $query['post_type'] = 'attachment';
    21682174        if ( MEDIA_TRASH
    21692175                && ! empty( $_REQUEST['query']['post_status'] )
  • src/wp-admin/includes/post.php

     
    10211021}
    10221022
    10231023/**
    1024  * Executes a query for attachments. An array of WP_Query arguments
    1025  * can be passed in, which will override the arguments set by this function.
     1024 * Get the query vars for the current attachments request
    10261025 *
    1027  * @since 2.5.0
     1026 * @since 4.2.0
    10281027 *
    1029  * @param array|bool $q Array of query variables to use to build the query or false to use $_GET superglobal.
    1030  * @return array
     1028 * @param array|false $q Array of query variables to use to build the query or false to use $_GET superglobal.
     1029 *
     1030 * @return array The parsed query vars.
    10311031 */
    1032 function wp_edit_attachments_query( $q = false ) {
    1033         if ( false === $q )
     1032function wp_edit_attachments_query_vars( $q = false ) {
     1033        if ( false === $q ) {
    10341034                $q = $_GET;
    1035 
     1035        }
    10361036        $q['m']   = isset( $q['m'] ) ? (int) $q['m'] : 0;
    10371037        $q['cat'] = isset( $q['cat'] ) ? (int) $q['cat'] : 0;
    10381038        $q['post_type'] = 'attachment';
    10391039        $post_type = get_post_type_object( 'attachment' );
    10401040        $states = 'inherit';
    1041         if ( current_user_can( $post_type->cap->read_private_posts ) )
     1041        if ( current_user_can( $post_type->cap->read_private_posts ) ) {
    10421042                $states .= ',private';
     1043        }
    10431044
    10441045        $q['post_status'] = isset( $q['status'] ) && 'trash' == $q['status'] ? 'trash' : $states;
    10451046        $q['post_status'] = isset( $q['attachment-filter'] ) && 'trash' == $q['attachment-filter'] ? 'trash' : $states;
    10461047
    10471048        $media_per_page = (int) get_user_option( 'upload_per_page' );
    1048         if ( empty( $media_per_page ) || $media_per_page < 1 )
     1049        if ( empty( $media_per_page ) || $media_per_page < 1 ) {
    10491050                $media_per_page = 20;
     1051        }
    10501052
    10511053        /**
    10521054         * Filter the number of items to list per page when listing media items.
     
    10581060        $q['posts_per_page'] = apply_filters( 'upload_per_page', $media_per_page );
    10591061
    10601062        $post_mime_types = get_post_mime_types();
    1061         $avail_post_mime_types = get_available_post_mime_types('attachment');
    1062 
    1063         if ( isset($q['post_mime_type']) && !array_intersect( (array) $q['post_mime_type'], array_keys($post_mime_types) ) )
     1063        if ( isset($q['post_mime_type']) && !array_intersect( (array) $q['post_mime_type'], array_keys($post_mime_types) ) ) {
    10641064                unset($q['post_mime_type']);
     1065        }
    10651066
    10661067        foreach( array_keys( $post_mime_types ) as $type ) {
    10671068                if ( isset( $q['attachment-filter'] ) && "post_mime_type:$type" == $q['attachment-filter'] ) {
     
    10741075                $q['post_parent'] = 0;
    10751076        }
    10761077
    1077         wp( $q );
     1078        return $q;
     1079}
    10781080
    1079         return array($post_mime_types, $avail_post_mime_types);
     1081/**
     1082 * Executes a query for attachments. An array of WP_Query arguments
     1083 * can be passed in, which will override the arguments set by this function.
     1084 *
     1085 * @since 2.5.0
     1086 *
     1087 * @param array|false $q Array of query variables to use to build the query or false to use $_GET superglobal.
     1088 * @return array
     1089 */
     1090function wp_edit_attachments_query( $q = false ) {
     1091        wp( wp_edit_attachments_query_vars( $q ) );
     1092
     1093        $post_mime_types = get_post_mime_types();
     1094        $avail_post_mime_types = get_available_post_mime_types( 'attachment' );
     1095
     1096        return array( $post_mime_types, $avail_post_mime_types );
    10801097}
    10811098
    10821099/**
  • src/wp-admin/js/media.js

     
    1 /* global ajaxurl, attachMediaBoxL10n */
     1/* global ajaxurl, attachMediaBoxL10n, _wpMediaGridSettings */
    22
    33var findPosts;
    44( function( $ ){
     
    7272        };
    7373
    7474        $( document ).ready( function() {
    75                 var $mediaGridWrap = $( '#wp-media-grid' );
     75                var settings, $mediaGridWrap = $( '#wp-media-grid' );
    7676
    7777                // Open up a manage media frame into the grid.
    7878                if ( $mediaGridWrap.length && window.wp && window.wp.media ) {
     79                        settings = _wpMediaGridSettings;
     80
    7981                        window.wp.media({
    8082                                frame: 'manage',
    81                                 container: $mediaGridWrap
     83                                container: $mediaGridWrap,
     84                                library: settings.queryVars
    8285                        }).open();
    8386                }
    8487
  • src/wp-admin/upload.php

     
    2424        wp_enqueue_media();
    2525        wp_enqueue_script( 'media-grid' );
    2626        wp_enqueue_script( 'media' );
     27
     28        $vars = wp_edit_attachments_query_vars();
     29        unset( $vars['mode'], $vars['post_type'], $vars['post_status'], $vars['posts_per_page'] );
     30
    2731        wp_localize_script( 'media-grid', '_wpMediaGridSettings', array(
    2832                'adminUrl' => parse_url( self_admin_url(), PHP_URL_PATH ),
     33                'queryVars' => $vars
    2934        ) );
    3035
    3136        get_current_screen()->add_help_tab( array(