Статьи

Освоение WP_User_Query

После всех этих предыдущих частей мы закончили с классом 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 работать с виджетом «Облако тегов» — это класс, который выполняет запросы о пользователях в 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 нужно изучить только семь свойств. Помните: они НЕ должны использоваться для изменения их значений. Вы можете получить их значения, но лучше не изменять их.

Это свойство хранит ассоциативный массив переменных запроса и их значений.

Это свойство содержит количество найденных элементов (в данном случае пользователей) для запроса.

Это свойство, подобно следующим свойствам, хранит предложения SQL для полей возврата.

Это свойство хранит предложение FROM для запроса.

Это свойство хранит WHERE для запроса.

Это свойство хранит предложение ORDERBY для запроса и используется для упорядочивания возвращаемого списка пользователей.

Это свойство хранит предложение LIMIT для запроса и используется для ограничения числа возвращаемых пользователей.

Помните методы класса WP_Query ? Ну, этот класс имеет только четыре метода, и они работают так же, как методы WP_Query . Давайте быстро посмотрим, почему каждый из них существует.

Этот метод просто выбирает переменную запроса из запроса.

В отличие от приведенного выше, этот метод устанавливает переменную запроса вместо ее получения.

В отличие от WP_Query , класс WP_User_Query не работает с «циклом». Вместо этого вам нужно использовать метод get_results() чтобы получить результаты запроса и поработать с ними.

Этот небольшой метод возвращает общее количество элементов (пользователей) для запроса.

Как и класс 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 , давайте сделаем пару примеров, чтобы узнать, как его использовать.

Допустим, вы хотите перечислить своих редакторов своим читателям, но вы помните, что один из ваших редакторов, Лиза, согласился работать с вами при условии анонимности, поэтому вам нужно оставить ее в списке «Редакторы». Вот как вы строите запрос:

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. Вот что вы делаете:

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 есть полезная коллекция элементов сценариев членства .