Від автора: у цій статті ми розглянемо клас 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 ‘
- ‘;
- ‘. $editor_info->display_name . ‘
// проходимся циклом по редакторам.
foreach ( $editors as $editor ) {
// отримуємо інформацію про кожного з них.
$editor_info = get_userdata( $editor->ID );
// виводимо ім’я редактора.
echo ‘
‘;
}
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. Бажаєте щось додати? Діліться своїми думками в коментарях. Якщо вам сподобалася стаття, не забудьте поділитися нею з друзями.