
Использование запросов 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 или мета-данные постов) в ВордПрессе.