Использование запросов 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 (слаг), и который имеет значение programmirovaniye:

<?php
$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'category', // используем таксономию категории
      'field' => 'slug', // нам нужен поиск по полю слаг — части URL категории
      'terms' => 'programmirovaniye', // значение поля слаг
      //'terms' => '15', // если нужно искать не по полю слаг, а по его ID — тогда поле field не обязательно
    )
  )
);
?>

 

Параметры аргументов запроса для получения публикаций по нескольким терминам таксономии

Если вам нужны публикации, которые можно определить несколькими массивами терминов в одной таксономии, тогда вам нужно расширить массив терминов. Например, чтобы найти публикации по нескольким ID тегов, запрос может выглядеть следующим образом:

<?php
$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post_tag', // в этом примере таксономия – это тег
      'terms' => [05, 25] // указываем ID возможных тэгов (публикация в любом)
      // если нужно, чтобы публикации принадлежали обоим тегам, добавьте параметр оператора:
      // 'operator' => 'AND'
      // если нужно исключить теги:
      // 'operator' => 'NOT IN'
    )
  )
);
?>

 

Параметры аргументов запроса для получения публикаций по нескольким терминам и нескольким таксономиям

Если вам нужен запрос с использованием нескольких таксономий, тогда вам нужно расширить массив запроса. В следующем примере будем использовать запрос публикаций из одной категории (programmirovaniye) и одним тегом (wordpress):

<?php
$args = array(
  'tax_query' => array(
    // нужно указать параметр relation (отношение), если несколько условий
    'relation' => 'AND', // в данном примере AND означает, что должны выполняться оба нижних условия
    // 'relation' => 'OR', // если нужно, чтобы выполнялось хотя бы одно из нижних условий
    array(
      'taxonomy' => 'category',
      'field' => 'slug',
      'terms' => ['programmirovaniye'] // категория со слагом programmirovaniye
      // 'terms' => ['programmirovaniye', 'javascript'] // если требуется массив категорий
    ),
    array(
      'taxonomy' => 'post_tag',
      'field' => 'slug',
      'terms' => ['wordpress'] // тег со слагом wordpress
      // 'terms' => ['wordpress', 'php'] // если требуется массив тегов
    )
  )
);
?>

Итак, как вы поняли, совмещая аргумент отношения (relation), оператора (operator) и массив терминов, вы можете создать очень сложный запрос. И это еще не все, начиная с ВордПресс версии 4.1 вы можете даже создавать вложенные массивы таксономий. Это еще больше сможет усложнить SQL запрос требуемых публикаций.

 

 

На сегодняшний день все, — мы рассмотрели использование параметров аргумента tax_query для запроса публикаций по таксономиям. Как вы видите, это очень мощный инструмент, дающий много возможностей и гибкости для запросов к вашей базе данных, и практически любым способом! Следующий практический урок серии будет посвящен рассмотрению запроса по параметрам кастомных полей (Custom Fields или мета-данные постов) в ВордПрессе.

 

Recent Posts

Зигмунд Фрейд

Когда ты умер, ты об этом не знаешь. Только другим тяжело. То же самое, когда…

5 дней ago

Подбор игрового ноутбука для комфортного прохождения S.T.A.L.K.E.R 2

Как для человека, который прошел каждую из 3 оригинальных игр серии, и на относительно слабеньком…

7 дней ago

Как научиться менеджменту в Украине?

Если вы закончили школу и хотите посвятить себя процессу управления бизнесом (любого уровня), тогда перед…

1 неделя ago

Использование запросов WP_Query в WordPress — 10 практик применения

В сегодняшней 10-й, заключительной части серии уроков по запросам WP_Query в ВордПресс мы наконец-то закрепим…

1 неделя ago

Использование запросов WP_Query в WordPress — часть 9 (аргументы для метаданных)

В сегодняшней части серии уроков по запросам WP_Query в ВордПресс мы будем рассматривать аргументы, которые…

2 недели ago

Использование запросов WP_Query в WordPress — часть 7 (аргументы для получения категорий, тегов)

Этот практический урок будет посвящен рассмотрению аргументов, которые можно использовать для получения публикаций определенных категорий…

2 недели ago