diff --git a/wp-includes/class-wp-user-query.php b/wp-includes/class-wp-user-query.php index 02cae108c8..1fdbd03c37 100644 --- a/wp-includes/class-wp-user-query.php +++ b/wp-includes/class-wp-user-query.php @@ -255,13 +255,6 @@ class WP_User_Query { $blog_id = absint( $qv['blog_id'] ); } - if ( isset( $qv['who'] ) && 'authors' == $qv['who'] && $blog_id ) { - $qv['meta_key'] = $wpdb->get_blog_prefix( $blog_id ) . 'user_level'; - $qv['meta_value'] = 0; - $qv['meta_compare'] = '!='; - $qv['blog_id'] = $blog_id = 0; // Prevent extra meta query - } - if ( $qv['has_published_posts'] && $blog_id ) { if ( true === $qv['has_published_posts'] ) { $post_types = get_post_types( array( 'public' => true ) ); @@ -281,6 +274,29 @@ class WP_User_Query { $this->meta_query = new WP_Meta_Query(); $this->meta_query->parse_query_vars( $qv ); + if ( isset( $qv['who'] ) && 'authors' == $qv['who'] && $blog_id ) { + $who_query = array( + 'key' => $wpdb->get_blog_prefix( $blog_id ) . 'user_level', + 'value' => 0, + 'compare' => '!=', + ); + + // Prevent extra meta query. + $qv['blog_id'] = $blog_id = 0; + + if ( empty( $this->meta_query->queries ) ) { + $this->meta_query->queries = array( $who_query ); + } else { + // Append the cap query to the original queries and reparse the query. + $this->meta_query->queries = array( + 'relation' => 'AND', + array( $this->meta_query->queries, $who_query ), + ); + } + + $this->meta_query->parse_query_vars( $this->meta_query->queries ); + } + $roles = array(); if ( isset( $qv['role'] ) ) { if ( is_array( $qv['role'] ) ) { diff --git a/wp-includes/version.php b/wp-includes/version.php index 17e7ee4698..2abab537a8 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '4.6-alpha-37359'; +$wp_version = '4.6-alpha-37360'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.