diff --git a/wp-includes/functions.php b/wp-includes/functions.php index 2e522c2e2..eb6654747 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -4278,9 +4278,9 @@ function _wp_meta_sql( $queries, $primary_table, $primary_id_column, $meta_table $where = ''; $i = 0; foreach ( $queries as $q ) { - $meta_key = isset( $q['meta_key'] ) ? trim( $q['meta_key'] ) : ''; - $meta_value = isset( $q['meta_value'] ) ? trim( $q['meta_value'] ) : ''; - $meta_compare = isset( $q['meta_compare'] ) ? $q['meta_compare'] : '='; + $meta_key = isset( $q['key'] ) ? trim( $q['key'] ) : ''; + $meta_value = isset( $q['value'] ) ? trim( $q['value'] ) : ''; + $meta_compare = isset( $q['compare'] ) ? $q['compare'] : '='; if ( !in_array( $meta_compare, array( '=', '!=', '>', '>=', '<', '<=', 'like' ) ) ) $meta_compare = '='; diff --git a/wp-includes/query.php b/wp-includes/query.php index 02d5d6043..ed2e000ca 100644 --- a/wp-includes/query.php +++ b/wp-includes/query.php @@ -1393,10 +1393,15 @@ class WP_Query { $this->meta_query = $qv['meta_query']; } - $meta_query = wp_array_slice_assoc( $qv, array( 'meta_key', 'meta_value', 'meta_compare' ) ); + $meta_query = array(); + foreach ( array( 'key', 'value', 'compare' ) as $key ) { + if ( !empty( $qv[ "meta_$key" ] ) ) + $meta_query[ $key ] = $qv[ "meta_$key" ]; + } - if ( !empty( $meta_query ) ) + if ( !empty( $meta_query ) ) { $this->meta_query[] = $meta_query; + } if ( empty($qv['author']) || ($qv['author'] == '0') ) { $this->is_author = false; diff --git a/wp-includes/user.php b/wp-includes/user.php index db7b561a7..af0e42fcc 100644 --- a/wp-includes/user.php +++ b/wp-includes/user.php @@ -451,17 +451,25 @@ class WP_User_Query { if ( $blog_id ) { $cap_meta_query = array(); - $cap_meta_query['meta_key'] = $wpdb->get_blog_prefix( $blog_id ) . 'capabilities'; + $cap_meta_query['key'] = $wpdb->get_blog_prefix( $blog_id ) . 'capabilities'; if ( $role ) { - $cap_meta_query['meta_value'] = $role; - $cap_meta_query['meta_compare'] = 'like'; + $cap_meta_query['value'] = $role; + $cap_meta_query['compare'] = 'like'; } $meta_queries[] = $cap_meta_query; } - $meta_queries[] = wp_array_slice_assoc( $qv, array( 'meta_key', 'meta_value', 'meta_compare' ) ); + $meta_query = array(); + foreach ( array( 'key', 'value', 'compare' ) as $key ) { + if ( !empty( $qv[ "meta_$key" ] ) ) + $meta_query[ $key ] = $qv[ "meta_$key" ]; + } + + if ( !empty( $meta_query ) ) { + $meta_queries[] = $meta_query; + } list( $meta_join, $meta_where ) = _wp_meta_sql( $meta_queries, $wpdb->users, 'ID', $wpdb->usermeta, 'user_id' ); $this->query_from .= $meta_join;