Make WordPress Core

Changeset 31037


Ignore:
Timestamp:
01/03/2015 08:23:06 AM (10 years ago)
Author:
wonderboymusic
Message:

Respect query vars for taxonomies passed as URL parameters when in grid mode of Media Library.

Fixes #30584.

Location:
trunk/src/wp-admin
Files:
4 edited

Legend:

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

    r31029 r31037  
    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     ) ) );
    2166 
     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    }
     2171
     2172    $query = array_intersect_key( $query, array_flip( $keys ) );
    21672173    $query['post_type'] = 'attachment';
    21682174    if ( MEDIA_TRASH
  • trunk/src/wp-admin/includes/post.php

    r30791 r31037  
    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.
    1026  *
    1027  * @since 2.5.0
    1028  *
    1029  * @param array|bool $q Array of query variables to use to build the query or false to use $_GET superglobal.
    1030  * @return array
    1031  */
    1032 function wp_edit_attachments_query( $q = false ) {
    1033     if ( false === $q )
     1024 * Get the query vars for the current attachments request
     1025 *
     1026 * @since 4.2.0
     1027 *
     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.
     1031 */
     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;
     
    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;
     
    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    /**
     
    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 ) {
     
    10751076    }
    10761077
    1077     wp( $q );
    1078 
    1079     return array($post_mime_types, $avail_post_mime_types);
     1078    return $q;
     1079}
     1080
     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
  • trunk/src/wp-admin/js/media.js

    r29725 r31037  
    1 /* global ajaxurl, attachMediaBoxL10n */
     1/* global ajaxurl, attachMediaBoxL10n, _wpMediaGridSettings */
    22
    33var findPosts;
     
    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        }
  • trunk/src/wp-admin/upload.php

    r29725 r31037  
    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
Note: See TracChangeset for help on using the changeset viewer.