wp_dropdown_users() WP 2.3.0

Виводить на екран список користувачів, що випадає.

Працює на основі:
get_users()
1 раз – 0.015165 сек
(гальмо) | 50000 разів – 812.51 сек
(гальмо) |
PHP 7.2.16, WP 5.2

Хуки з функції

Повертає

Строку. Повертає або виводить на екран HTML код списку користувачів: <select>.

Шаблон використання

wp_dropdown_users( array(
	'show_option_all' => '',
	'show_option_none' => '',
	'hide_if_only_one_author' => '',
	'orderby' => 'display_name',
	'order' => 'ASC',
	'include' => '',
	'exclude' => '',
	'multi' => false,
	'show' => 'display_name',
	'echo' => true,
	'selected' => false,
	'include_selected' => false,
	'name' => 'user',
	'id' => 'user',
	'class' => '',
	'blog_id' => $GLOBALS['blog_id'],
	'who' => '',
	'role' => '',
	'role__in' => array(),
	'role__not_in' => array(),
	'capability' => '',
	'capability__in' => array(),
	'capability__not_in' => array(),

)));

Використання

<?php wp_dropdown_users( $args ); ?>
$args
(рядок/масив)
Масив аргументів, відповідно до яких буде сформовано список (див.нижче).


За замовчуванням: параметри за замовчуванням

Аргументи параметра $args

Крім наведених нижче параметрів, також можна передавати параметри функції get_users() .

show_option_all
(рядок)
Текст для списку “вибрати всіх” (буде на початку списку).


За замовчуванням: ”
show_option_none
(рядок)
Текст для списку “жоден користувач” (буде на початку списку або другим пунктом, якщо встановлено параметр show_option_all).


За замовчуванням: ”
orderby
(рядок)

Ключ, за яким сортувати список. Може бути:

  • ID– Сортувати за ID користувача (теоретично виходить по порядку реєстрації);

  • user_nicename– сортувати на ім’я;

  • display_name– сортувати по імені, що відображається – за замовчуванням.
    За замовчуванням: ‘display_name’
order
(рядок)

Напрямок сортування:

  • ASC– по порядку – за умовчанням;

  • DESC– в зворотньому напрямку.
    За замовчуванням: ‘ASC’
include
(рядок)
ID користувачів, яких потрібно показати у списку (вказувати через кому). Наприклад,
include=4,5,12виведе список із трьох користувачів.


За замовчуванням: ”
exclude
(рядок)
ID користувачів, яких не потрібно показувати у списку (вказувати через кому). Наприклад,
include=4,5,12виведе список із користувачів, крім 3-х зазначених.


За замовчуванням: ”
multi
(логічний)
Пропустити чи ні атрибут ID у елемента
. За промовчанням ‘user’.


За замовчуванням: ‘user’
class
(рядок)
Значення атрибуту class у тега
. За промовчанням значення параметра ‘name’.


За замовчуванням: значення ‘name’
blog_id
(число)
ID блогу. Лише для мультисайтів. За промовчанням id поточного блогу.


За замовчуванням: $GLOBALS[‘blog_id’]
who
(рядок)

Яких користувачів відображати. Може бути:

  • ''– Показувати всіх користувачів. (За замовчуванням)
  • 'authors'– користувачі, які можуть публікувати пости (з ролями: author, editor, administrator).

За замовчуванням: ”

role
(рядок/масив)
Назва ролі користувачів з якою потрібно включити до результату. Можна вказати кілька назв у масиві. Якщо вказаний масив, то користувач повинен мати всі ці ролі одночасно. C WP 4.7.
role__in
(масив)
Масив назв ролей користувачів, які будуть додані в результат. Користувач буде доданий у результат, якщо він має хоч одну із зазначених ролей. C WP 4.7.


За замовчуванням: array()
role__not_in
(масив)
Масив назв ролей користувачів, які потрібно виключити з результату. Користувач не буде доданий у результат, якщо він має хоч одну із зазначених ролей. C WP 4.7.


За замовчуванням: array()

Приклади

0

#1 Виведемо на екран список усіх користувачів, що випадає

Зробимо з нього повноцінну форму відправлення даних (всередині тега <form> і з кнопкою submit):

<h2>Користувачі:</h2>
<form action="<?php bloginfo('url'); ?>" method="get">
   <?php wp_dropdown_users( array('name'=>'author') ); ?>
   <input type="submit" name="submit" value="view" />
</form>
0

#2 Випадаючий список авторів у таблиці записів

Дивіться в окремій нотатці .

список змін

З версії 2.3.0Введено.
З версії 4.5.0Added the ‘display_name_with_login’ значення для ‘show’ .
З версії 4.7.0Added the $role , $role__in , і $role__not_in parameters.

Код wp_dropdown_users() WP 6.0.2

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 theryry arguments for list users в 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 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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *