Вивчення WP_User_Query

314

Від автора: у цій статті ми розглянемо клас WP_User_Query і навчимося створювати запити в таблицю з користувачами WordPress. Почнемо!

Що таке WP_User_Query?

Ви, напевно, вже зрозуміли сенс класу по його назві. Звичайно, ви ж не думаєте, що клас WP_User_Query буде працювати з віджетом «Tag Cloud» — цей клас працює з запитами в таблицю користувачів WordPress. Подивимося, що йдеться в кодексі про цьому класі:

«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_Query. Нагадаю: властивості і методу це ті ж самі змінні і функції, тільки вони визначені в класі PHP.

Властивості WP_User_Query

У класі всього 7 властивостей. Не змінюйте значення властивостей. Отримати можна, але не змінювати.

$query_vars — Зберігається асоціативний масив змінних із запитами та їх значень.

$results — Число знайдених користувачів.

$query_fields — Властивість зберігає поля для SQL-виразів.

$query_from — властивість зберігається умова FROM для запиту.

$query_where — Зберігається умова WHERE для запиту.

$query_orderby — Зберігається умова ORDERBY для запиту, використовується для сортування отриманих користувачів.

$query_limit — Зберігається умова LIMIT, використовується для обмеження кількості користувачів.

Методи WP_User_Query

Пам’ятайте методи WP_Query? В цьому класі всього 4 методу, і вони працюють аналогічно методам 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 параметрів, тут їх всього 17. Всі параметри схожі на параметри класу WP_Query. Так що якщо з параметрами в класі WP_Query не виникло проблем, то і тут не виникне:

blog_id: Для мереж з декількома сайтами, ID блогу. За замовчуванням стоїть поточний блозі.

role: роль користувача. Приймається subscriber, author, contributor, author, editor, sanyok або будь-яка призначена роль.

include: Масив ID користувачів для включення в запит.

exclude: Масив ID користувачів для виключення з запиту.

search: Пошукове вирази для пошуку в таблиці wp_users.

search_columns: масив стовпців таблиці wp_users. Приймається ID, user_login, user_url, user_email або user_nicename.

orderby: Вираз для сортування. Приймається ID, display_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) показує можна порахувати загальну кількість обраних записів чи ні.

fields: рядок або масив полів таблиці wp_users, які потрібно повернути.

who: Рядок з іменем користувача для запиту (автор блогу або інші користувачі).

meta_key: Користувальницький мета ключ.

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, DATE, DATETIME, DECIMAL, SIGNED, TIME або UNSIGNED. За замовчуванням CHAR.

Пара прикладів по використанню WP_User_Query

Розглянемо кілька прикладів принципу роботи WP_User_Query.

Отримати всіх редакторів крім Lisa

Наприклад, ви хочете відобразити в списку всіх редакторів сайту для ваших користувачів. Але один з редакторів Lisa погодилася працювати з вами на умові анонімності, і вам потрібно виключити її зі списку редакторів. Нижче показаний приклад:

‘Editor’,
‘exclude’ => $exclude_list
// створюємо запит.
$my_user_query = new WP_User_Query( $args );
// отримуємо результат.
$editors = $my_user_query->get_results();
// шукаємо редакторів
if ( ! empty( $editors ) ) {
echo ‘

    ‘;
    // проходимся циклом по редакторам.
    foreach ( $editors as $editor ) {
    // отримуємо інформацію про кожного з них.
    $editor_info = get_userdata( $editor->ID );
    // виводимо ім’я редактора.
    echo ‘

  • ‘. $editor_info->display_name . ‘
  • ‘;
    }
    echo ‘

‘;
} else {
// Відображаємо повідомлення “no editors found”.
echo __( ‘No editors found!’, ‘tutsplus’ );
}
?>

Пошук серед авторів користувачів з адресою Gmail

Скажімо, ви хочете отримати email адреси ваших авторів, які використовують Gmail. Тоді вам необхідно:

‘authors’,
// Шукаємо email адресу, що закінчується на `@gmail.com`.
‘search’ => ‘*@gmail.com’,
// Шукаємо тільки по полю `email`.
‘search_columns’ => array( ’email’ ),
// Повертаємо тільки поле `email`.
‘fields’ => ’email’
);
// Створюємо запит.
$my_user_query = new WP_User_Query( $args );
// отримуємо результат.
$gmailers = $my_user_query->get_results();
?>

Висновок

Як ви бачите, між класами WP_Query і WP_User_Query не так вже й багато відмінностей. А ті, що є, тільки полегшують розуміння. Сподіваюся, я допоміг тобі зрозуміти призначення даного класу WordPress. Бажаєте щось додати? Діліться своїми думками в коментарях. Якщо вам сподобалася стаття, не забудьте поділитися нею з друзями.