On this page
wp_dropdown_users( array|string $args = '' ): string
Creates dropdown HTML content of users.
Description
The content can either be displayed, which it is by default or retrieved by setting the ‘echo’ argument. The ‘include’ and ‘exclude’ arguments do not need to be used; all users will be displayed in that case. Only one can be used, either ‘include’ or ‘exclude’, but not both.
The available arguments are as follows:
Parameters
$argsarray|string Optional-
Array or string of arguments to generate a drop-down of users.
See WP_User_Query::prepare_query() for additional available arguments.
show_option_allstringText to show as the drop-down default (all).
show_option_nonestringText to show as the drop-down default when no users were found.option_none_valueint|stringValue to use for $show_option_non when no users were found. Default -1.hide_if_only_one_authorstringWhether to skip generating the drop-down if only one user was found.orderbystringField to order found users by. Accepts user fields.
Default'display_name'.orderstringWhether to order users in ascending or descending order. Accepts'ASC'(ascending) or'DESC'(descending).
Default'ASC'.includeint[]|stringArray or comma-separated list of user IDs to include.
excludeint[]|stringArray or comma-separated list of user IDs to exclude.
multibool|intWhether to skip the ID attribute on the'select'element.
Accepts1|trueor0|false. Default0|false.showstringUser data to display. If the selected item is empty then the'user_login'will be displayed in parentheses.
Accepts any user field, or'display_name_with_login'to show the display name with user_login in parentheses.
Default'display_name'.echoint|boolWhether to echo or return the drop-down. Accepts1|true(echo) or0|false(return). Default1|true.selectedintWhich user ID should be selected. Default 0.include_selectedboolWhether to always include the selected user ID in the drop- down. Default false.namestringName attribute of select element. Default'user'.idstringID attribute of the select element. Default is the value of $name.classstringClass attribute of the select element.blog_idintID of blog (Multisite only). Default is ID of the current blog.whostringWhich type of users to query. Accepts only an empty string or'authors'.rolestring|arrayAn array or a comma-separated list of role names that users must match to be included in results. Note that this is an inclusive list: users must match *each* role.role__instring[]An array of role names. Matched users must have at least one of these roles. Default empty array.role__not_instring[]An array of role names to exclude. Users matching one or more of these roles will not be included in results. Default empty array.
More Arguments from WP_User_Query::prepare_query( ... $query )
Array or string of Query parameters.
blog_idintThe site ID. Default is the current site.rolestring|string[]An array or a comma-separated list of role names that users must match to be included in results. Note that this is an inclusive list: users must match *each* role.role__instring[]An array of role names. Matched users must have at least one of these roles.role__not_instring[]An array of role names to exclude. Users matching one or more of these roles will not be included in results.meta_keystring|string[]Meta key or keys to filter by.meta_valuestring|string[]Meta value or values to filter by.meta_comparestringMySQL operator used for comparing the meta value.
See WP_Meta_Query::__construct() for accepted values and default value.meta_compare_keystringMySQL operator used for comparing the meta key.
See WP_Meta_Query::__construct() for accepted values and default value.meta_typestringMySQL data type that the meta_value column will be CAST to for comparisons.
See WP_Meta_Query::__construct() for accepted values and default value.meta_type_keystringMySQL data type that the meta_key column will be CAST to for comparisons.
See WP_Meta_Query::__construct() for accepted values and default value.meta_queryarrayAn associative array of WP_Meta_Query arguments.
See WP_Meta_Query::__construct() for accepted values.capabilitystring|string[]An array or a comma-separated list of capability names that users must match to be included in results. Note that this is an inclusive list: users must match *each* capability.
Does NOT work for capabilities not in the database or filtered via 'map_meta_cap'.
capability__instring[]An array of capability names. Matched users must have at least one of these capabilities.
Does NOT work for capabilities not in the database or filtered via 'map_meta_cap'.
capability__not_instring[]An array of capability names to exclude. Users matching one or more of these capabilities will not be included in results.
Does NOT work for capabilities not in the database or filtered via 'map_meta_cap'.
includeint[]An array of user IDs to include.excludeint[]An array of user IDs to exclude.searchstringSearch keyword. Searches for possible string matches on columns.
When$search_columnsis left empty, it tries to determine which column to search in based on search string.search_columnsstring[]Array of column names to be searched. Accepts'ID','user_login','user_email','user_url','user_nicename','display_name'.
orderbystring|arrayField(s) to sort the retrieved users by. May be a single value, an array of values, or a multi-dimensional array with fields as keys and orders ('ASC'or'DESC') as values. Accepted values are:
'ID''display_name'(or'name')'include''user_login'(or'login')'login__in''user_nicename'(or'nicename'),'nicename__in'- 'user_email (or
'email') 'user_url'(or'url'),'user_registered'(or'registered')'post_count''meta_value','meta_value_num'- The value of
$meta_key - An array key of
$meta_queryTo use'meta_value'or'meta_value_num',$meta_keymust be also be defined. Default'user_login'.
orderstringDesignates ascending or descending order of users. Order values passed as part of an$orderbyarray take precedence over this parameter. Accepts'ASC','DESC'. Default'ASC'.offsetintNumber of users to offset in retrieved results. Can be used in conjunction with pagination. Default 0.numberintNumber of users to limit the query for. Can be used in conjunction with pagination. Value -1 (all) is supported, but should be used with caution on larger sites.
Default -1 (all users).pagedintWhen used with number, defines the page of results to return.
Default 1.count_totalboolWhether to count the total number of users found. If pagination is not needed, setting this to false can improve performance.
Default true.fieldsstring|string[]Which fields to return. Single or all fields (string), or array of fields. Accepts:
'ID''display_name''user_login''user_nicename''user_email''user_url''user_registered''user_pass''user_activation_key''user_status''spam'(only available on multisite installs)'deleted'(only available on multisite installs)'all'for all fields and loads user meta.'all_with_meta'Deprecated. Use'all'.
'all'.whostringType of users to query. Accepts'authors'.
Default empty (all users).has_published_postsbool|string[]Pass an array of post types to filter results to users who have published posts in those post types.trueis an alias for all public post types.nicenamestringThe user nicename.nicename__instring[]An array of nicenames to include. Users matching one of these nicenames will be included in results.nicename__not_instring[]An array of nicenames to exclude. Users matching one of these nicenames will not be included in results.loginstringThe user login.login__instring[]An array of logins to include. Users matching one of these logins will be included in results.login__not_instring[]An array of logins to exclude. Users matching one of these logins will not be included in results.
Default:
''
Return
string HTML dropdown list of users.
Source
File: wp-includes/user.php. View all references
function wp_dropdown_users( $args = '' ) {
$defaults = array(
'show_option_all' => '',
'show_option_none' => '',
'hide_if_only_one_author' => '',
'orderby' => 'display_name',
'order' => 'ASC',
'include' => '',
'exclude' => '',
'multi' => 0,
'show' => 'display_name',
'echo' => 1,
'selected' => 0,
'name' => 'user',
'class' => '',
'id' => '',
'blog_id' => get_current_blog_id(),
'who' => '',
'include_selected' => false,
'option_none_value' => -1,
'role' => '',
'role__in' => array(),
'role__not_in' => array(),
'capability' => '',
'capability__in' => array(),
'capability__not_in' => array(),
);
$defaults['selected'] = is_author() ? get_query_var( 'author' ) : 0;
$parsed_args = wp_parse_args( $args, $defaults );
$query_args = wp_array_slice_assoc(
$parsed_args,
array(
'blog_id',
'include',
'exclude',
'orderby',
'order',
'who',
'role',
'role__in',
'role__not_in',
'capability',
'capability__in',
'capability__not_in',
)
);
$fields = array( 'ID', 'user_login' );
$show = ! empty( $parsed_args['show'] ) ? $parsed_args['show'] : 'display_name';
if ( 'display_name_with_login' === $show ) {
$fields[] = 'display_name';
} else {
$fields[] = $show;
}
$query_args['fields'] = $fields;
$show_option_all = $parsed_args['show_option_all'];
$show_option_none = $parsed_args['show_option_none'];
$option_none_value = $parsed_args['option_none_value'];
/**
* Filters the query arguments for the list of users in the dropdown.
*
* @since 4.4.0
*
* @param array $query_args The query arguments for get_users().
* @param array $parsed_args The arguments passed to wp_dropdown_users() combined with the defaults.
*/
$query_args = apply_filters( 'wp_dropdown_users_args', $query_args, $parsed_args );
$users = get_users( $query_args );
$output = '';
if ( ! empty( $users ) && ( empty( $parsed_args['hide_if_only_one_author'] ) || count( $users ) > 1 ) ) {
$name = esc_attr( $parsed_args['name'] );
if ( $parsed_args['multi'] && ! $parsed_args['id'] ) {
$id = '';
} else {
$id = $parsed_args['id'] ? " id='" . esc_attr( $parsed_args['id'] ) . "'" : " id='$name'";
}
$output = "<select name='{$name}'{$id} class='" . $parsed_args['class'] . "'>\n";
if ( $show_option_all ) {
$output .= "\t<option value='0'>$show_option_all</option>\n";
}
if ( $show_option_none ) {
$_selected = selected( $option_none_value, $parsed_args['selected'], false );
$output .= "\t<option value='" . esc_attr( $option_none_value ) . "'$_selected>$show_option_none</option>\n";
}
if ( $parsed_args['include_selected'] && ( $parsed_args['selected'] > 0 ) ) {
$found_selected = false;
$parsed_args['selected'] = (int) $parsed_args['selected'];
foreach ( (array) $users as $user ) {
$user->ID = (int) $user->ID;
if ( $user->ID === $parsed_args['selected'] ) {
$found_selected = true;
}
}
if ( ! $found_selected ) {
$selected_user = get_userdata( $parsed_args['selected'] );
if ( $selected_user ) {
$users[] = $selected_user;
}
}
}
foreach ( (array) $users as $user ) {
if ( 'display_name_with_login' === $show ) {
/* translators: 1: User's display name, 2: User login. */
$display = sprintf( _x( '%1$s (%2$s)', 'user dropdown' ), $user->display_name, $user->user_login );
} elseif ( ! empty( $user->$show ) ) {
$display = $user->$show;
} else {
$display = '(' . $user->user_login . ')';
}
$_selected = selected( $user->ID, $parsed_args['selected'], false );
$output .= "\t<option value='$user->ID'$_selected>" . esc_html( $display ) . "</option>\n";
}
$output .= '</select>';
}
/**
* Filters the wp_dropdown_users() HTML output.
*
* @since 2.3.0
*
* @param string $output HTML output generated by wp_dropdown_users().
*/
$html = apply_filters( 'wp_dropdown_users', $output );
if ( $parsed_args['echo'] ) {
echo $html;
}
return $html;
}
Hooks
- apply_filters( 'wp_dropdown_users',
string $output ) -
Filters the wp_dropdown_users() HTML output.
- apply_filters( 'wp_dropdown_users_args',
array $query_args ,array $parsed_args ) -
Filters the query arguments for the list of users in the dropdown.
Related
Uses
| Uses | Description |
|---|---|
| selected() wp-includes/general-template.php | Outputs the HTML selected attribute. |
| is_author() wp-includes/query.php | Determines whether the query is for an existing author archive page. |
| get_query_var() wp-includes/query.php | Retrieves the value of a query variable in the WP_Query class. |
| wp_array_slice_assoc() wp-includes/functions.php | Extracts a slice of an array, given a list of keys. |
| get_users() wp-includes/user.php | Retrieves list of users matching criteria. |
| _x() wp-includes/l10n.php | Retrieves translated string with gettext context. |
| esc_attr() wp-includes/formatting.php | Escaping for HTML attributes. |
| esc_html() wp-includes/formatting.php | Escaping for HTML blocks. |
| get_userdata() wp-includes/pluggable.php | Retrieves user info by user ID. |
| get_current_blog_id() wp-includes/load.php | Retrieve the current site ID. |
| wp_parse_args() wp-includes/functions.php | Merges user defined arguments into defaults array. |
| apply_filters() wp-includes/plugin.php | Calls the callback functions that have been added to a filter hook. |
Used By
| Used By | Description |
|---|---|
| post_author_meta_box() wp-admin/includes/meta-boxes.php | Displays form field with list of authors. |
| WP_Posts_List_Table::inline_edit() wp-admin/includes/class-wp-posts-list-table.php | Outputs the hidden row displayed when inline editing |
Changelog
© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/wp_dropdown_users