При создании пользовательской фильтрации контента в WordPress – для блогов, каталогов товаров или каталогов услуг – параметр tax_query в WP_Query является одним из самых необходимых инструментов. Он позволяет разработчикам извлекать посты, страницы или пользовательские типы постов на основе определенных терминов таксономии.
Таксономии в WordPress – это способы группировки контента. WordPress поставляется с двумя таксономиями по умолчанию:
Но разработчики могут создавать и пользовательские таксономии, например:
Каждая таксономия содержит термины – например, таксономия региона может включать такие термины, как Европа, Азия или США.
Налоговый запрос – это массив условий, передаваемых в WP_Query, который указывает WordPress получить только контент, соответствующий определенным терминам таксономии.
К таким запросам относятся:
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => 'news',
),
),
);
$query = new WP_Query($args);
Это вернет все посты в категории новостей.
WordPress поддерживает несколько операторов в налоговых запросах:
Вы можете комбинировать несколько фильтров таксономии:
$args = array(
'post_type' => 'product',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_type',
'field' => 'slug',
'terms' => 'hosting',
),
array(
'taxonomy' => 'region',
'field' => 'slug',
'terms' => array('europe', 'us'),
'operator' => 'IN',
),
),
);
В результате будут возвращены продукты типа “хостинг”, доступные в регионах Европы или США.
Некоторые распространенные случаи использования налоговых запросов в реальных WordPress-проектах:
Параметр tax_query в WordPress позволяет разработчикам создавать динамические, релевантные отображения контента. Независимо от того, создаете ли вы фильтрованную сетку товаров, страницу поиска или пользовательский архив, налоговые запросы позволят вам точно настроить, какой контент будет показан пользователям – на основе любой заданной вами таксономии. Хотите пойти дальше? Объедините налоговые запросы с метазапросами или параметрами поиска для еще более мощной фильтрации.