Use get_users() in wp_dropdown_users(). See #14572

git-svn-id: http://svn.automattic.com/wordpress/trunk@15574 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
scribu 2010-09-05 18:47:25 +00:00
parent c60d3205e6
commit 7d0891ad85
2 changed files with 20 additions and 28 deletions

View File

@ -2979,6 +2979,24 @@ function wp_parse_id_list( $list ) {
return array_unique(array_map('absint', $list));
}
/**
* Extract a slice of an array, given a list of keys
*
* @since 3.1.0
*
* @param array $array The original array
* @param array $keys The list of keys
* @return array The array slice
*/
function wp_array_slice_assoc( $array, $keys ) {
$slice = array();
foreach ( $keys as $key )
if ( isset( $array[ $key ] ) )
$slice[ $key ] = $array[ $key ];
return $slice;
}
/**
* Filters a list of objects, based on a set of key => value arguments
*

View File

@ -461,11 +461,7 @@ class WP_User_Query {
$meta_queries[] = $cap_meta_query;
}
$meta_query = array();
foreach ( array( 'meta_key', 'meta_value', 'meta_compare' ) as $key )
if ( isset( $qv[ $key ] ) )
$meta_query[ $key ] = $qv[ $key ];
$meta_queries[] = $meta_query;
$meta_queries[] = wp_array_slice_assoc( $qv, array( 'meta_key', 'meta_value', 'meta_compare' ) );
$meta_query_sql = _wp_meta_sql( $meta_queries, 'user_id', $wpdb->usermeta );
@ -831,29 +827,7 @@ function wp_dropdown_users( $args = '' ) {
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
$blog_prefix = $wpdb->get_blog_prefix( $blog_id );
$query = "SELECT {$wpdb->users}.* FROM $wpdb->users, $wpdb->usermeta WHERE {$wpdb->users}.ID = {$wpdb->usermeta}.user_id AND meta_key = '{$blog_prefix}capabilities'";
$query_where = array();
if ( is_array($include) )
$include = join(',', $include);
$include = preg_replace('/[^0-9,]/', '', $include); // (int)
if ( $include )
$query_where[] = "ID IN ($include)";
if ( is_array($exclude) )
$exclude = join(',', $exclude);
$exclude = preg_replace('/[^0-9,]/', '', $exclude); // (int)
if ( $exclude )
$query_where[] = "ID NOT IN ($exclude)";
if ( $query_where )
$query .= " AND " . join(' AND', $query_where);
$query .= " ORDER BY $orderby $order";
$users = $wpdb->get_results( $query );
$users = get_users( wp_array_slice_assoc( $args, array( 'blog_id', 'include', 'exclude', 'orderby', 'order' ) ) );
$output = '';
if ( !empty($users) ) {