# wp_dropdown_users()

URL: https://chugunov.pro/api-wordpress/functions/wp_dropdown_users/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.3.0.

> Устаревший элемент. Помечен устаревшим с версии 5.9.0.

## Сигнатура

```php
wp_dropdown_users( array|string $args = '' ): string
```

## Описание

Содержимое можно либо вывести, что происходит по умолчанию, либо получить, задав аргументу 'echo' значение false. Аргументы 'include' и 'exclude' необязательны; если они не указаны, отображаются все пользователи. В одном вызове можно использовать только один из них — либо 'include', либо 'exclude', но не оба.

## Параметры

- `$args` `array|string` — необязательный, по умолчанию `''`. Array or string of arguments to generate a drop-down of users.
  
  See [WP_User_Query::prepare_query()](https://developer.wordpress.org/reference/classes/wp_user_query/prepare_query/) for additional available arguments.
  
  - `show_option_all` string Text to show as the drop-down default (all).
  
  - `show_option_none` string Text to show as the drop-down default when no users were found.
  
  - `option_none_value` int|string Value to use for `$show_option_none` when no users were found. Default -1.
  
  - `hide_if_only_one_author` string Whether to skip generating the drop-down if only one user was found.
  
  - `orderby` string Field to order found users by. Accepts user fields.
  
  Default `'display_name'`.
  
  - `order` string Whether to order users in ascending or descending order. Accepts `'ASC'` (ascending) or `'DESC'` (descending).
  
  Default `'ASC'`.
  
  - `include` int[]|string Array or comma-separated list of user IDs to include.
  
  - `exclude` int[]|string Array or comma-separated list of user IDs to exclude.
  
  - `multi` bool|int Whether to skip the ID attribute on the `'select'` element.
  
  Accepts `1|true` or `0|false`. Default `0|false`.
  
  - `show` string User 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'`.
  
  - `echo` int|bool Whether to echo or return the drop-down. Accepts `1|true` (echo) or `0|false` (return). Default `1|true`.
  
  - `selected` int Which user ID should be selected. Default 0.
  
  - `include_selected` bool Whether to always include the selected user ID in the drop- down. Default false.
  
  - `name` string Name attribute of select element. Default `'user'`.
  
  - `id` string ID attribute of the select element. Default is the value of `$name`.
  
  - `class` string Class attribute of the select element.
  
  - `blog_id` int ID of blog (Multisite only). Default is ID of the current blog.
  
  - `who` string Deprecated, use `$capability` instead.
  
  Which type of users to query. Accepts only an empty string or `'authors'`. Default empty (all users).
  
  - `role` string|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__in` string[] An array of role names. Matched users must have at least one of these roles.
  
  - `role__not_in` string[] An array of role names to exclude. Users matching one or more of these roles will not be included in results.
  
  - `capability` string|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'](https://developer.wordpress.org/reference/hooks/map_meta_cap/).
  
  - `capability__in` string[] 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'](https://developer.wordpress.org/reference/hooks/map_meta_cap/).
  
  - `capability__not_in` string[] 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'](https://developer.wordpress.org/reference/hooks/map_meta_cap/).

## Возвращаемое значение

`string`

## Исходный код

Файл: `wp-includes/user.php:1719`

```php
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;
}
```

## История изменений

- 5.9.0 — Added the 'capability', 'capability__in', and 'capability__not_in' parameters. Deprecated the 'who' parameter.
- 4.7.0 — Added the 'role', 'role__in', and 'role__not_in' parameters.
- 4.5.0 — Added the 'display_name_with_login' value for 'show'.
- 2.3.0 — Introduced.

## Связанные

Использует: [`selected`](https://chugunov.pro/api-wordpress/functions/selected/), [`is_author`](https://chugunov.pro/api-wordpress/functions/is_author/), [`get_query_var`](https://chugunov.pro/api-wordpress/functions/get_query_var/), `WP_Query`, [`wp_array_slice_assoc`](https://chugunov.pro/api-wordpress/functions/wp_array_slice_assoc/), [`get_users`](https://chugunov.pro/api-wordpress/functions/get_users/), [`_x`](https://chugunov.pro/api-wordpress/functions/_x/), [`esc_attr`](https://chugunov.pro/api-wordpress/functions/esc_attr/), [`esc_html`](https://chugunov.pro/api-wordpress/functions/esc_html/), [`get_userdata`](https://chugunov.pro/api-wordpress/functions/get_userdata/), [`get_current_blog_id`](https://chugunov.pro/api-wordpress/functions/get_current_blog_id/), [`wp_parse_args`](https://chugunov.pro/api-wordpress/functions/wp_parse_args/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/).
Используется в: [`post_author_meta_box`](https://chugunov.pro/api-wordpress/functions/post_author_meta_box/), `WP_Posts_List_Table::inline_edit`.

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/wp_dropdown_users/
