get_users

Получает пользователей в соответствии с переданными параметрами.

Работает на базе класса WP_User_Query{}

Хуков нет.

Возвращает

Массив. Массив объектов с данными о каждом пользователе. Если указано определенное поле в параметре fields, то будет возвращен массив объектов со значениями этого поля:

$users = get_users( $args );

Шаблон использования

$args = array(
	'blog_id'      => $GLOBALS['blog_id'],
	'role'         => '',
	'role__in'     => array(),
	'role__not_in' => array(),
	'meta_key'     => '',
	'meta_value'   => '',
	'meta_compare' => '',
	'meta_query'   => array(),
	'include'      => array(),
	'exclude'      => array(),
	'orderby'      => 'login',
	'order'        => 'ASC',
	'offset'       => '',
	'search'       => '',
	'search_columns' => array(),
	'number'       => '',
	'paged'        => 1,
	'count_total'  => false,
	'fields'       => 'all',
	'who'          => '',
	'has_published_posts' => null,
	'date_query'   => array() // смотрите WP_Date_Query
);
$users = get_users( $args );
foreach( $users as $user ){
	// обрабатываем
}
$args(массив)
Параметры по которым будут получены пользователи.
По умолчанию: по умолчанию

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


  • blog_id (число)


  • role (строка)


  • role__in (массив)


  • role__not_in (массив)


  • include (массив)


  • exclude (массив)


  • meta_key (строка)


  • meta_value (строка)


  • meta_compare (строка)


  • meta_query (массив)


  • orderby (строка)


  • order (строка)


  • offset (число)


  • number (число)


  • paged (число)


  • search (строка)


  • search_columns (массив)


  • count_total (логический)


  • fields (строка/массив)


  • who (строка)


  • has_published_posts (логический/массив/строка)


  • date_query (массив)

blog_id(число)
ID текущего блога. Используется при включении мультисайтов.

role(строка)
Роли пользователей, которых нужно получить.

role__in(массив)
Массив названий ролей, пользователей с которыми нужно получить. Получаемый юзер, должен иметь хотя бы одну из указанных ролей.
По умолчанию: array()

role__not_in(массив)
Массив названий ролей, пользователей с которыми нужно исключить из результата. Если у юзера есть указанная роль он будет исключен.
По умолчанию: array()

include(массив)
Массив ID пользователей, которых нужно получить. Будут получены только эти пользователи, независимо от других параметров, не соответствующих этому параметру.

exclude(массив)
Массив ID пользователей, которых нужно исключить из результата.

meta_key(строка)
Название ключа, который должен быть у пользователя, чтобы он попал в отбор.

meta_value(строка)
Значение ключа meta_key. Будут получены пользователи если совпадает значение.

meta_compare(строка)
Оператор сравнения для значения meta_value. Может быть: !=, >, >=, <, или <=. Например указав тут оператор !=, будут получены все пользователи у которых есть поле meta_key со значением не равным meta_value.

meta_query(массив)
Массив данных о meta_key/meta_value. По аналогии с WP_Query.

orderby(строка)

Как сортировать полученный список пользователей?
Можно указать: include, nicename, email, url, registered, display_name, post_count, meta_value, meta_value_num, $meta_key (ключ массива запроса из meta_query).

Заметка: post_count работает только для типа записи post и не работает для произвольных типов записей (справедливо для версии WP 4.6). Обойти это не просто, возможно в будущем это измениться, а пока можно сделать так:

Пусть тип записи называется realty, тогда используйте такой хук прямо перед get_users().

add_action('pre_user_query', 'temp_replace');
function temp_replace($query){
	$query->query_from = str_replace("post_type = 'post'", "post_type = 'realty'", $query->query_from );
};

// Ваш вызов get_users() !!!!!!!!!!!!!!

remove_action('pre_user_query', 'temp_replace');

По умолчанию: ‘user_login’

к началу

order(строка)
Направление сортировки. ASC – от меньшего к большему (a-я). DESC – от большего к меньшему (я-а).

offset(число)
Отступ от начала полученного списка. Если указать 5, то 5 первых пользователей из полученного списка будут пропущены.

number(число)
Количество пользователей которых нужно получить.

paged(число)
Используется в связке с параметром number. Номер страницы пагинации.
По умолчанию: 1

search(строка)

Запрос для поиска пользователей. Поиск идет по точному вхождению. Когда нужно искать подстроку, используйте в запросе *. Например, если нужно найти пользователя с именем Иван Викторович, то запрос будет выглядеть так: Иван Викторович или Иван* или *Викторович или *Виктор*

Если параметр search_columns не указан, то будет проанализирован поисковой запрос и поиск будет проходить по подходящим колонкам. По умолчанию ищет в: e-mail, URL, ID или имя пользователя (отображаемое имя в поиске не участвует).

к началу

search_columns(массив)

Массив названий колонок в которых искать запрос из параметра search.
Может быть: ID, login, nicename, email, url.

Когда нужно установить особый сет колонок, используйте фильтр user_search_columns:

// $search_columns = apply_filters( 'user_search_columns', $search_columns, $search, $this );
add_filter('user_search_columns', function($cols){
	// изменяем $cols
	return $cols;
});

По умолчанию: array()

count_total(логический)
Считать сколько всего пользователей было найдено по запросу. Если пагинация не нужна, то установите false – это немного ускорит запрос.
По умолчанию: true

fields(строка/массив)

Какие поля включить в возвращаемые данные о каждом пользователе.

  • all – все.
  • all_with_meta – будут получены еще и значение метаданных пользователя.
  • ID, display_name, user_login, user_nicename, user_email, user_url, user_registered – поля из таблицы wp_user – будут получены только указанные данные. Эти поля нужно указывать в массиве, даже если нужно получить всего одно поле, например: array(‘user_email’).

По умолчанию: ‘all’

who(строка)
Если указать authors, то будут показаны только авторы.
По умолчанию: ” (все пользователи)

has_published_posts(логический/массив/строка)

Укажите название типа записи или массив названий. Тогда будут получены пользователи у которых есть опубликованные записи указанного типа.

Можно указать true, тогда будут получены пользователи у которых есть хоть одна опубликованная запись любого публичного типа.

date_query(массив)
Запрос по дате. Смотрите wp_date_query. Работает с колонкой user_registered – когда пользователь был зарегистрирован.

Примеры

#1. Выведем список e-mail всех подписчиков блога с ID 1:

// получим email администраторов
$users = get_users( array(
	'role'   => 'administrator',
	'fields' => ['user_email'],
) );

$emails = wp_list_pluck( $users, 'user_email' );

/* $emails
Array
(
	[0] => mymail@bk.ru
	[1] => secondmail@list.ru
)
*/

Код из


wp-includes/user.php

WP 4.7.2

<?php
function get_users( $args = array() ) {

	$args = wp_parse_args( $args );
	$args['count_total'] = false;

	$user_search = new WP_User_Query($args);

	return (array) $user_search->get_results();
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *