Використання запитів WP_Query у WordPress — частина 8 (аргументи для таксономій)
Сьогоднішня частина серії уроків по запитам WP_Query у ВордПрес буде присвячена розгляду аргументів, які можна використовувати для отримання публікацій певних таксономій.
Клас WP_Query у ВордПрес має велику кількість можливих аргументів, що можна використовувати для запитів майже всього з таблиці wp_posts бази даних. І сьогодні настала черга розглянути аргументи для запиту публікацій по таксономіям.
Що таке таксономія у ВордПрес? Це своєрідний узагальнюючий термін для згрупованих по певному принципу публікацій. Наприклад, категорія (рубрика) — це теж таксономія, адже по ній можна згрупувати публікації. До інших видів таксономій також можна віднести наступне: теги, формати публікацій, пункти меню, нестандартні користувацькі таксономії.
Параметри аргументів запиту для отримання публікацій по таксономії
В попередньому уроці ми розглядали параметри для категорій і тегів, але параметри для термінів таксономії трохи складніші, через додавання проміжної ланки tax_query для можливості побудування більш складного запиту. В цьому масиві вказуються аргументи визначення таксономії та терміни (terms):
- визначення таксономії:
taxonomy(string) - визначення терміну таксономії:
field(string). По якому полю обирати таксономію:'term_id'(за замовчуванням),'name','slug' - визначення термінів (значень) таксономії:
terms(int/string/array) - значення для включення нащадків при ієрархічній таксономії:
include_children(boolean). За замовчуванням значенняtrue— включати. - визначення оператору умов для таксономії (умова в SQL запиті):
operator(string). Можливі значення:IN(за замовчуванням),NOT IN,AND,EXISTSтаNOT EXISTS.
Використання параметру оператора дозволяє запитувати множинні таксономії.
Параметри аргументів запиту для отримання публікацій по одному терміну таксономії
Ось приклад найпростішого запиту, в якому ми визначаємо, що нам потрібна таксономія category (категорія), шукати по полю slug (слаг), і що має значення programuvannya:
<?php
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'category', // використовуємо таксономію категорії
'field' => 'slug', // нам потрібен пошук по полю слаг — частині URL категорії
'terms' => 'programuvannya', // значення поля слаг
//'terms' => '15', // якщо потрібно шукати не по полю слаг, а по його ID — тоді поле field не обов’язкове
)
)
);
?>
Параметри аргументів запиту для отримання публікацій по кільком термінам таксономії
Якщо вам потрібні публікації, які можна визначити кількома масивами термінів в одній таксономії, тоді вам потрібно розширити масив термінів. Наприклад, щоб віднайти публікації по кільком ID тегів, запит може виглядати так:
<?php
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'post_tag', // в цьому прикладі таксономія — це тег
'terms' => [05, 25] // вказуємо ID можливих тегів (публікація в будь-якому)
// якщо потрібно, щоб публікації належали обом тегам, тоді додайте параметр оператора:
// 'operator' => 'AND'
// якщо потрібно виключити теги:
// 'operator' => 'NOT IN'
)
)
);
?>
Параметри аргументів запиту для отримання публікацій по кільком термінам та кільком таксономіям
Якщо вам потрібен запит з використанням кількох таксономій, тоді вам потрібно розширити масив запиту. В наступному прикладі будемо використовувати запит публікацій з однієї категорії (programuvannya) та одним тегом (wordpress):
<?php
$args = array(
'tax_query' => array(
// потрібно вказати параметр relation (відношення), якщо кілька умов
'relation' => 'AND', // в даному прикладі AND означає, що повинні виконуватися обидві нижні умови
// 'relation' => 'OR', // якщо потрібно, щоб виконувалася хоча б одна із нижніх умов
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => ['programuvannya'] // категорія зі слагом programuvannya
// 'terms' => ['programuvannya', 'javascript'] // якщо потрібен масив категорій
),
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => ['wordpress'] // тег зі слагом wordpress
// 'terms' => ['wordpress', 'php'] // якщо потрібен масив тегів
)
)
);
?>
Отже, як ви зрозуміли, поєднуючи аргумент відношення (relation), оператора (operator) та масив термінів, ви можете створити дуже складний запит. І це ще не все, починаючи з ВордПрес версії 4.1 ви можете навіть створювати вкладені масиви таксономій. Це ще більше зможе ускладнити SQL запит потрібних публікацій.
На сьогодні все, — ми розглянули використання параметрів аргументу tax_query для запиту публікацій по таксономіям. Як ви бачите, це дуже потужний інструмент, що дає багато можливостей і гнучкості для запитів до вашої бази даних, і практично в будь-який спосіб! Наступний практичний урок серії буде присвячено розгляду запиту по параметрам кастомних полів (Custom Fields або мета-дані постів) у ВордПрес.