get_users() │ WP 3.1.0
meta_query(array) An array of meta_key/meta_value data. Similar to WP_Query. orderby(string).
How the resulting list of users shoul be sorted?
You can specify: include , nicename , email , url , registered , display_name , post_count , meta_value , meta_value_num , $meta_key (key of the query array from meta_query).
Note: post_count only works for posts with post type and does not work for arbitrary post types (true for WP 4.6 version). It’s not easy to get around this, maybe this will change in the future, but for now you can do it like this:
Let the post type be called realty , then use a hook like this right before get_users() call.
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 ); >; // Your get_users() call . remove_action( 'pre_user_query', 'temp_replace' );
order(string) Sort direction. ASC — from lesser to more (a-z). DESC — from more to less (z-a). offset(number) Offset from the beginning of the resulting list. If 5 is specified, the first 5 users in the resulting list will be skipped. number(number) The number of users you want to get. paged(number) Pagination page number. Used in conjunction with number parameter.
Default: 1 search(string)
Query to search for users. It searches by exact occurrence.
When you want to search for a substring, use * in the query. For example, if you want to search for a user named Alex Victorov , the query will look like this: Alex Victorov or Alex* or Victorov or Victor* .
If the parameter search_columns is not specified, then the search query will be analyzed and the search will be conducted in appropriate columns. By default, it searches in: email, URL, ID or username (the display name is not included in the search).
An array of column names in which to search for a query from the search parameter.
Can be: ID , login , nicename , email , url .
When you want to set a special set of columns, use the filter user_search_columns:
// $search_columns = apply_filters( 'user_search_columns', $search_columns, $search, $this ); add_filter( 'user_search_columns', function( $cols ) < // change $cols return $cols; >);
Which fields to include in the returned data about each user.
- all — all.
- all_with_meta — the user’s metadata value will also be retrieved.
- ID , display_name , user_login , user_nicename , user_email , user_url , user_registered — fields from table wp_user — only specified data will be retrieved. These fields must be specified in the array, even if you want to get only one field, for example: [ ‘user_email’ ] .
who(string) If you specify authors , only the authors will be shown.
Default: » (all users) has_published_posts(bool/array/string)
Specify the name of the post type or an array of names. Then it will retrieve users who have published posts of the specified type.
You can specify true , then there will be users with at least one published post of any public type.
date_query(array) Query by date. See WP_Date_Query<>. Works with the user_registered column — when the user was registered. count_total(bool).
For this function, the parameter cannot be changed and is always false. Used in WP_User_Query<> to create pagination.
Count how many users were found by the query.
get_users() │ WP 3.1.0
Роли пользователей, которых нужно получить. Указывается в виде массива или строкой (несколько ролей перечисляются через запятую).
Получаемый юзер, должен иметь все из указанных ролей.
Список ролей по умолчанию:
administrator editor author contributor subscriber
Массив названий ролей, пользователей которых нужно получить.
Получаемый юзер, должен иметь хотя бы одну из указанных ролей.
По умолчанию: array()
role__not_in(массив) Массив названий ролей, пользователей которых нужно исключить из результата. Если у юзера есть указанная роль он будет исключен.
По умолчанию: array() capability(string|string[]) (WP 5.9)
Массив или список возможностей, разделенных запятыми, которым должны соответствовать пользователи, чтобы быть включенными в результат выборки.
Указанному тут списку пользователи должны соответствовать каждой возможности.
НЕ работает для возможностей, отсутствующих в базе данных или отфильтрованных через map_meta_cap.
capability__in(string[]) (WP 5.9)
Массив имен возможностей. Соответствующие пользователи должны иметь хотя бы одну из этих возможностей.
НЕ работает для возможностей, отсутствующих в базе данных или отфильтрованных через map_meta_cap.
capability__not_in(string[]) (WP 5.9)
Массив имен возможностей для исключения. Пользователи, соответствующие одной или нескольким из этих возможностей, не будут включены в результат выборки.
НЕ работает для возможностей, отсутствующих в базе данных или отфильтрованных через map_meta_cap.
Если указать authors , то будут показаны только авторы.
Этот аргумент устарел с WP 5.9, используйте новый аргумент capabilities или role . Подробнее читайте Capability Queries in WordPress 5.9.
По умолчанию: » (все пользователи)
nicename(строка) Никнейм пользователя.
По умолчанию: » nicename__in(строка[]) Массив Никнейм пользователей, которых нужно включить в выборку. Пользователи, совпадающие с одним из этих никнеймов, будут включены в результаты.
По умолчанию: array() nicename__not_in(строка[]) Массив никнеймов для исключения. Пользователи, совпадающие с одним из этих никнеймов, не будут включены в результаты.
По умолчанию: array() login(строка) Логин пользователя.
По умолчанию: » login__in(строка[]) Массив логинов пользователей, которых нужно включить в выборку. Пользователи, совпадающие с одним из этих логинов, будут включены в результаты.
По умолчанию: array() login__not_in(строка[]) Массив логинов для исключения. Пользователи, совпадающие с одним из этих логинов, не будут включены в результаты.
По умолчанию: array() include(массив) Массив ID пользователей, которых нужно получить. Будут получены только эти пользователи, независимо от других параметров, не соответствующих этому параметру. exclude(массив) Массив ID пользователей, которых нужно исключить из результата. meta_key(строка) Название ключа, который должен быть у пользователя, чтобы он попал в отбор. meta_value(строка) Значение ключа meta_key. Будут получены пользователи если совпадает значение. meta_compare(строка) Оператор сравнения для значения 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');
order(строка) Направление сортировки. ASC — от меньшего к большему (a-я). DESC — от большего к меньшему (я-а). offset(число) Отступ от начала полученного списка. Если указать 5, то 5 первых пользователей из полученного списка будут пропущены. number(число) Количество пользователей которых нужно получить. paged(число) Номер страницы пагинации. Используется в связке с параметром number .
По умолчанию: 1 search(строка)
Запрос для поиска пользователей. Поиск идет по точному вхождению. Когда нужно искать подстроку, используйте в запросе * . Например, если нужно найти пользователя с именем Иван Викторович , то запрос будет выглядеть так: Иван Викторович или Иван* или *Викторович или *Виктор*
Если параметр search_columns не указан, то будет проанализирован поисковой запрос и поиск будет проходить по подходящим колонкам. По умолчанию ищет в: e-mail, URL, ID или имя пользователя (отображаемое имя в поиске не участвует).
Массив названий колонок в которых искать запрос из параметра 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; >);
Какие поля включить в возвращаемые данные о каждом пользователе.
- ID
- display_name
- user_login
- user_nicename
- user_email
- user_url
- user_registered — поля из таблицы wp_user — будут получены только указанные данные. Эти поля нужно указывать в массиве, даже если нужно получить всего одно поле, например: [ ‘user_email’ ] .
- user_pass
- user_activation_key
- user_status
- spam (only available on multisite installs)
- deleted (only available on multisite installs)
- all — все.
- all_with_meta — будут получены еще и значение метаданных пользователя.
Укажите название типа записи или массив названий. Тогда будут получены пользователи у которых есть опубликованные записи указанного типа.
Можно указать true , тогда будут получены пользователи у которых есть хоть одна опубликованная запись любого публичного типа.
date_query(массив) Запрос по дате. Смотрите WP_Date_Query<>. Работает с колонкой user_registered — когда пользователь был зарегистрирован. count_total(логический)
Для этой функции параметр нельзя изменить и он всегда равен false. Используется в WP_User_Query<> для создания пагинации.
Считать сколько всего пользователей было найдено по запросу.
Примеры
#1 Получим все email администраторов сайта
// получим 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 ) */
#2 Использование поля ‘search’ (поиск пользователей)
Этот пример найдет и выведет на экран всех пользователей у которых имя, ID или email равен «john».
Create php MVC app. Get all users
In this tutorial we will begin to make management users section. Our task today will be to select all users from database with their roles.
Code lesson (users.tpl.php)
Code lesson (UsersController.php)
Code lesson (UsersModel.php)
db->prepare($sql); $stmt->execute(); $result = array(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) < $result[$row['id']] = $row; >return $result; > public function getUserById($userId) < $sql = "SELECT users.id, users.email, users.fullName, users.login, role.name as role FROM users INNER JOIN role ON users.role_id = role.id WHERE users.id = :id"; $stmt = $this->db->prepare($sql); $stmt->bindValue(«:id», $userId, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); if(!empty($result)) < return $result; >else < return false; >> public function getUsersRoles() < $result = array(); $sql = "SELECT * FROM role"; $stmt = $this->db->prepare($sql); $stmt->execute(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) < $result[] = $row; >return $result; > public function updateUserInfo($userId, $userFullName, $userLogin, $userEmail, $userRole) < $sql = "UPDATE users SET login = :login, fullName = :fullName, email = :email, role_id = :roleId WHERE "; $stmt = $this->db->prepare($sql); $stmt->bindValue(«:login», $userLogin, PDO::PARAM_STR); $stmt->bindValue(«:fullName», $userFullName, PDO::PARAM_STR); $stmt->bindValue(«:email», $userEmail, PDO::PARAM_STR); $stmt->bindValue(«:roleId», $userRole, PDO::PARAM_INT); $stmt->bindValue(«:id», $userId, PDO::PARAM_INT); $stmt->execute(); return true; > public function addNewUser($userLogin, $userFullName, $userEmail, $userPassword, $userRole) < $sql = "INSERT INTO users(login, fullName, email, password, role_id) VALUES (:login, :fullName, :email, :password, :role_id) "; $stmt = $this->db->prepare($sql); $stmt->bindValue(«:login», $userLogin, PDO::PARAM_STR); $stmt->bindValue(«:fullName», $userFullName, PDO::PARAM_STR); $stmt->bindValue(«:email», $userEmail, PDO::PARAM_STR); $stmt->bindValue(«:password», $userPassword, PDO::PARAM_STR); $stmt->bindValue(«:role_id», $userRole, PDO::PARAM_INT); $stmt->execute(); return true; > public function deleteUser($id) < $sql = "DELETE FROM users WHERE $stmt = $this->db->prepare($sql); $stmt->bindValue(«:id», $id, PDO::PARAM_INT); $stmt->execute(); return true; > >