SebWeo
Цей практичний урок буде присвячений розгляду аргументів, які можна використовувати для отримання публікацій певних категорій і тегів з допомогою запиту 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. Наступний практичний урок серії буде присвячено розгляду параметрам таксономій аргументів запиту у ВордПрес.
WordPress роками був неперевершеним "монолітом": він відповідав і за зручну адмін-панель, і за збереження даних,…
У світі веб-серверів часто говорять про протистояння Nginx vs Apache. Але що, якби я сказав…
Коли я починав свій шлях у веб-розробці, питання "який веб-сервер використовувати?" практично не стояло. Відповідь…
Коли мова заходить про веб-сервери, два імені завжди на слуху: Apache та Nginx. Apache —…
У світі веб-розробки ми постійно стикаємося з проблемою: "А в мене на комп'ютері все працює!".…
На зорі моєї кар'єри веб-розробника все було відносно просто: встановив локальний сервер (пам'ятаєте Denwer?), поклав…