После всех этих предыдущих частей мы закончили с классом WP_Query
— но это не значит, что мы закончили с серией! Пришло время познакомиться с WP_Query
брата и сестры WP_User_Query
: WP_User_Query
, WP_Comment_Query
, WP_Meta_Query
и WP_Date_Query
.
В этой части мы узнаем об использовании класса WP_User_Query
для запросов пользователей в WordPress.
Давайте начнем!
Что такое WP_User_Query?
Вы, вероятно, получите представление о том, что такое WP_User_Query
, просто прочитав его имя. Да, никто не ожидал, что WP_User_Query
работать с виджетом «Облако тегов» — это класс, который выполняет запросы о пользователях в WordPress.
Давайте посмотрим, что WordPress Codex говорит о классе WP_User_Query
:
WP_User_Query
— это класс, определенный вwp-includes/user.php
, который позволяет запрашивать таблицы базы данных WordPress «wp_users
» и «wp_usermeta
». Этот класс был представлен в версии 3.1, и в результате классWP_User_Search
устарел.
По сути, мы можем сказать, что « WP_User_Query
— это WP_Query
для пользователей». Он работает с wp_users
и wp_usermeta
для запроса пользователей и их метаданных.
Теперь давайте посмотрим, что у вас под WP_User_Query
и узнаем о свойствах, методах и параметрах WP_User_Query
. Тогда мы посмотрим, как это работает, рассмотрев несколько примеров.
Быстрый совет: мы рассмотрели это при представлении свойств и методов класса WP_Query
, но позвольте мне повторить это в качестве быстрого напоминания: «Свойства» и «методы» являются просто «переменными» и «функциями», которые определены внутри класс PHP.
Свойства WP_User_Query
В классе WP_User_Query
нужно изучить только семь свойств. Помните: они НЕ должны использоваться для изменения их значений. Вы можете получить их значения, но лучше не изменять их.
$query_vars
Это свойство хранит ассоциативный массив переменных запроса и их значений.
$results
Это свойство содержит количество найденных элементов (в данном случае пользователей) для запроса.
$query_fields
Это свойство, подобно следующим свойствам, хранит предложения SQL для полей возврата.
$query_from
Это свойство хранит предложение FROM
для запроса.
$query_where
Это свойство хранит WHERE
для запроса.
$query_orderby
Это свойство хранит предложение ORDERBY
для запроса и используется для упорядочивания возвращаемого списка пользователей.
$query_limit
Это свойство хранит предложение LIMIT
для запроса и используется для ограничения числа возвращаемых пользователей.
Методы WP_User_Query
Помните методы класса WP_Query
? Ну, этот класс имеет только четыре метода, и они работают так же, как методы WP_Query
. Давайте быстро посмотрим, почему каждый из них существует.
Метод get()
Этот метод просто выбирает переменную запроса из запроса.
Метод set()
В отличие от приведенного выше, этот метод устанавливает переменную запроса вместо ее получения.
Метод get_results()
В отличие от WP_Query
, класс WP_User_Query
не работает с «циклом». Вместо этого вам нужно использовать метод get_results()
чтобы получить результаты запроса и поработать с ними.
Метод get_total()
Этот небольшой метод возвращает общее количество элементов (пользователей) для запроса.
Параметры WP_User_Query
Как и класс WP_Query
, WP_User_Query
имеет параметры, о которых вам нужно знать. Но в то время как WP_Query
имеет большое количество параметров (более 50!), WP_User_Query
имеет только 17 параметров для беспокойства, и они очень похожи на те, что в WP_Query
, поэтому, если вы знакомы с ними, он не должен будь любезен, изучая эти.
-
blog_id
: целое число для указания идентификатора блога в мультисайтовых сетях. По умолчанию используется текущий блог. -
role
: строка для указания роли пользователя. Принимаетsubscriber
,author
,contributor
,author
,editor
,administrator
и любую пользовательскую роль, созданную пользователем. -
include
: массив идентификаторов пользователей для включения в запрос. -
exclude
: массив идентификаторов пользователей для исключения из запроса. -
search
: Строковое значение для поиска в полях таблицыwp_users
. -
search_columns
: массив столбцов таблицыwp_users
. ПринимаетID
,user_login
,user_url
,user_email
иuser_nicename
. -
orderby
: Строка, в которой указывается, как сортировать возвращаемых пользователей. ПринимаетID
,display_name
name
,name
/user_name
,login
/user_login
,nicename
/user_nicename
,email
/user_email
,url
/user_url
,registered
/user_registered
,post_count
иmeta_value
. По умолчанию дляlogin
. -
order
: строка для установки порядка возрастания (ASC
) или убывания (DESC
). -
offset
: целое число, указывающее количество пользователей, которое необходимо передать. -
number
: целое число, чтобы указать количество возвращаемых пользователей. -
count_total
: логическое значение (TRUE
/FALSE
),count_total
нужно ли считать общее количество найденных пользователей. -
fields
: строка или массив, чтобы решить, какие поля возвращать из таблицыwp_users
. -
who
: Строка (либоauthors
либоall
, что является значением по умолчанию), указывающая, каких пользователей запрашивать. -
meta_key
: строка дляmeta_key
пользовательского ключа мета-поля пользователя. -
meta_value
: строка дляmeta_value
. -
meta_compare
: строка для установки оператора для проверки параметра'meta_value'
. Принимает'='
,'!='
,'>'
,'>='
,'<'
,'<='
,'LIKE'
,'NOT LIKE'
,'IN'
,'NOT IN'
,'BETWEEN'
,'NOT BETWEEN'
,'EXISTS'
и'NOT EXISTS'
. По умолчанию'='
. -
meta_query
: массив для создания полного запроса метаданных с использованием ключей, аналогичных приведенным выше: -
key
: строка для установки ключа настраиваемого поля. -
value
: строка или массив для установки значения настраиваемого поля (или значений). -
compare
: строка для установки оператора сравнения. Принимает те же значения, что иmeta_compare
выше. -
type
: строка для установки типа настраиваемого поля. ПринимаетNUMERIC
,BINARY
,CHAR
,CHAR
,DATE
,DECIMAL
,SIGNED
,TIME
иUNSIGNED
. По умолчанию используетсяCHAR
.
Пробуем WP_User_Query с несколькими примерами
Теперь мы увидели, как работает WP_User_Query
, давайте сделаем пару примеров, чтобы узнать, как его использовать.
Список всех редакторов, кроме Лизы
Допустим, вы хотите перечислить своих редакторов своим читателям, но вы помните, что один из ваших редакторов, Лиза, согласился работать с вами при условии анонимности, поэтому вам нужно оставить ее в списке «Редакторы». Вот как вы строите запрос:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
<?php
// Add Lisa’s user id, 14, in an array.
$exclude_list = array( 14 );
$args = array(
‘role’ => ‘Editor’,
‘exclude’ => $exclude_list
);
// Custom query.
$my_user_query = new WP_User_Query( $args );
// Get query results.
$editors = $my_user_query->get_results();
// Check for editors
if ( ! empty( $editors ) ) {
echo ‘<ul class=»editors-list»>’;
// Loop over editors.
foreach ( $editors as $editor ) {
// Get each editor’s data.
$editor_info = get_userdata( $editor->ID );
// Show editor’s name.
echo ‘<li>’ .
}
echo ‘</ul>’;
} else {
// Display «no editors found» message.
echo __( ‘No editors found!’, ‘tutsplus’ );
}
?>
|
Поиск пользователей Gmail среди ваших авторов
Допустим, вы хотите собрать адреса электронной почты ваших авторов, которые используют адрес Gmail. Вот что вы делаете:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
<?php
// Setup arguments.
$args = array(
// Search for authors only.
‘who’ => ‘authors’,
// Search for email addresses ending with `@gmail.com`.
‘search’ => ‘*@gmail.com’,
// Search the `email` field only.
‘search_columns’ => array( ’email’ ),
// Return the `email` field only.
‘fields’ => ’email’
);
// Custom query.
$my_user_query = new WP_User_Query( $args );
// Get query results.
$gmailers = $my_user_query->get_results();
?>
|
Заворачивая все
Как вы можете видеть, между WP_Query
и WP_User_Query
есть только несколько отличий, и различия на самом деле делают WP_User_Query
проще для понимания. Я надеюсь, что помог вам узнать об этом классном классе WordPress.
У вас есть что добавить в эту статью? Поделитесь своими мыслями с нами в разделе комментариев ниже. И если вам понравилась статья, не забудьте поделиться ею с друзьями.
Увидимся в следующей части серии!
Если вам интересны несколько сценариев и плагинов, которые могут предоставить вам более продвинутые функциональные возможности в системах пользователей и членства, на Envato Market есть полезная коллекция элементов сценариев членства .