
Використання запитів WP_Query у WordPress — частина 7 (аргументи для отримання категорій, тегів)
Цей практичний урок буде присвячений розгляду аргументів, які можна використовувати для отримання публікацій певних категорій і тегів з допомогою запиту WP_Query у ВордПрес.
З попередніх частин цієї серії уроків ви дізналися про структуру запиту WP_Query
та деякі його властивості і методи. Також ми перейшли до практичного освоєння та розуміння аргументів, зокрема при отриманні постів, сторінок та публікацій певного типу.
Оскільки у запиті WP_Query
є величезна кількість можливих аргументів, їх розгляд розділений на підтеми. І сьогоднішня тема — це аргументи для отримання з бази даних публікацій на основі їх категорій та тегів. Хоча ці дві таксономії дещо схожі між собою, проте мають деякі відмінності, про які вам потрібно знати.
Параметри аргументів запиту для отримання публікацій по категорії
Почнемо з розгляду параметрів категорії. Ви можете використовувати один з таких варіантів:
- використання ідентифікатора категорії:
cat
(int) - використання слагу категорії (НЕ назву):
category_name
(string) - використання масиву «входження» ідентифікаторів категорії:
category__and
(array) - використання масиву «входження» ідентифікаторів категорії:
category__in
(array) - використання «зворотнього» масиву ідентифікаторів категорії:
category__not_in
(array)
Важливий момент: «небезпечно» використовувати назву категорії, а також її слаг, оскільки це можна в будь-який момент змінити. А ідентифікатор (ID) — це незмінна річ, використання якої дозволить вам уникнути потенційних проблем.
А тепер давайте перейдемо до окремого розгляду кожного з цих параметрів.
Параметр cat
аргументів запиту по категорії
Параметр cat
простий: достатньо вказати один ідентифікатор категорії (ID), або ж рядок із ідентифікаторів категорії, як показано нижче:
<?php $args = array( 'cat' => '8' // ID однієї потрібної категорії // якщо потрібно кілька категорій, тоді використовуйте рядок із ID // 'cat' => '5, 6, 7' // ID кількох потрібних категорій — string // якщо потрібно виключити категорію із запиту — поставте перед ID знак мінусу // 'cat' => '9, -10' // щоб виключити категорію під ID 10 ); ?>
Приклад коду вище накаже двигуну «витягти» з бази даних публікації із будь-якої з перелічених категорій. Якщо вам потрібні публікації в кожній із масиву категорій, тоді використовуєте параметр category_and
(про це далі).
Щоб виключити категорію із запиту, використовуйте запис ID категорії у параметрі cat
зі знаком мінус перед ним, як показано в прикладі.
Параметр category_name
аргументів запиту по категорії
Параметр category_name
використовує слаг категорії (! не ім’я). Подібним чином до попереднього прикладу ви можете використовувати параметр з окремою категорією або з переліком категорій у рядку:
<?php $args = array( // запит публікацій з однієї категорії: 'category_name' => 'slag-kategoriyi' // слаг потрібної категорії // щоб знайти публікації в кількох категоріях: // 'category_name' => 'slag-kategoriyi, insha-kategoriya, sche-odin-slag' // слаг потрібних категорій ); ?>
Параметр category__and
аргументів запиту по категорії
Якщо вам потрібно публікації в усіх категоріях, використовуйте цей параметр. Сюди потрібно передавати ідентифікатори категорії (ID). Наприклад, щоб знайти публікації в усіх трьох категоріях, ось як може виглядати запис аргументів:
<?php $args = array( // масив потрібних категорій: 'category__and' => array( '7', '8', '9' ) ); ?>
Зауважте наступні моменти: тут використовується масив, а не рядок; у назві параметра два символи підкреслення (риска знизу, андерскор), а не один.
Параметр category__in
аргументів запиту по категорії
Цей параметр використовується для пошуку публікацій в одній або кількох із масиву категорій. Так само приймає ідентифікатор категорії в якості значення:
<?php $args = array( // для отримання публікацій в одній або кількох категоріях: 'category__in' => array( '7', '8', '9' ) ); ?>
Параметр category__not_in
аргументів запиту по категорії
Якщо потрібні категорії, окрім вказаних, тоді для вас є параметр category__not_in
— він саме так і працює:
<?php $args = array( // щоб виключити публікації з однієї категорії: 'category__not_in' => '11' // ID однієї категорії для виключення // щоб виключити публікації з масиву (кількох) категорій: // 'category__not_in' => array( '7', '9' ) ); ?>
Параметри аргументів запиту для отримання публікацій по тегам
Параметри тегів схожі, але дещо відрізняються від параметрів категорій:
- використання слагу тега:
tag
(string) - використання ідентифікатора тегу:
tag_id
(int) - використання масиву «входження» ідентифікаторів тегів:
tag__and
(array) - використання масиву «входження» ідентифікаторів тегів:
tag__in
(array) - використання масиву «виключних» ідентифікаторів тегів:
tag__not_in
(array) - використання «сукупного» масиву слагів тегів:
tag_slug__and
(array) - використання масиву «входження» слагів тегів:
tag_slug__in
(array)
Тепер приділимо увагу кожному із них.
Параметр tag
аргументів запиту по тегу
Параметр tag
приймає значення слагу тега (! не назва) і йому можна передати одне або кілька значень у рядку:
<?php $args = array( // щоб знайти публікації лише по одному тегу: 'tag' => 'miy-tag' // слаг одного тегу // знайти публікації по кільком тегам: // 'tag' => 'miy-tag, second-tag, inshiy-tag' // перелічено всі бажані теги (їх слаги) ); ?>
Параметр tag_id
аргументів запиту по тегу
Параметр tag_id
приймає ідентифікатор тегу (по аналогії із cat
), та може працювати з одним або кількома ID тегів:
<?php $args = array( // щоб знайти публікації по одному тегові: 'tag_id' => '14' // ID одного тегу // щоб знайти публікації по кільком ID тегів: // 'tag_id' => '14, 17, 18' // перелічено всі бажані теги (їх ID) для вибірки // якщо потрібно виключити теги: // 'tag_id' => '14, -17, 18' // тут тег з ID 17 виключено із вибірки ); ?>
Параметр tag__in
аргументів запиту по тегу
Цей параметр дозволяє знаходити публікації з одним або декількома масивами тегів:
<?php $args = array( // щоб знайти публікації по масиву ID тегів: 'tag_in' => array( '14', '15', '19' ) ); ?>
Параметр tag__not_in
аргументів запиту по тегу
Параметр tag__not_in
дозволяє «витягати» з бази даних публікації, які не мають заданого тегу чи масиву тегів:
<?php $args = array( // потрібно використовувати масив, навіть якщо тут лише один тег 'tag__not_in' => array( '18' ) // ID тегу для виключення // щоб отримати публікації, що не належать кільком тегам: // 'tag__not_in' => array( '14', '17', '25' ) // масив ідентифікаторів тегів ); ?>
Параметри tag_slug__and
та tag_slug__in
аргументів запиту по тегу
Ці два параметри поводяться точно так само, як і параметри tag__and
та tag__in
, за винятком того, що тут використовується слаг тегу замість його ідентифікатора:
<?php $args = array( // щоб знайти публікації по будь-якому слагу з масиву тегів: 'tag_slug__in' => array( 'miy-tag', 'second-tag', 'inshiy-tag' ) // щоб знайти публікації, що мають всі перелічені слаги тегів: // 'tag_slug__and' => array( 'miy-tag', 'second-tag', 'inshiy-tag' ) // перелічено всі бажані теги (їх слаги) ); ?>
От і все, тему сьогоднішнього уроку вичерпано. В даному уроці ми розглянули використання параметрів для категорій та тегів в аргументах запиту WP_Query
. Наступний практичний урок серії буде присвячено розгляду параметрам таксономій аргументів запиту у ВордПрес.