tax_query в get_posts() не работает?
Я пытаюсь вывести все записи из каждой таксономии для пользовательского типа записей product
(товары jigoshop). Я получаю все таксономии с помощью $cats = get_terms('product_cat');
, затем прохожу по ним в цикле и пытаюсь получить все записи, которые находятся в таксономии. Проблема в том, что это не работает. Возвращается пустой результат!
$uposts = get_posts(array(
'post_type' => 'product',
'numberposts' => -1,
'tax_query' => array(
'taxonomy' => $cat->taxonomy,
'field' => 'slug',
'terms' => array($cat->slug),
'operator' => 'IN'
)
));
Если я изменяю 'terms' => array($cat->slug)
на 'terms' => $cat->slug
, это возвращает все записи, как будто tax_query полностью игнорируется.
Есть идеи, почему это не работает? Я пробовал экспериментировать с operator
, менял field
на ID (и также отправлял $cat->ID
как term)... ничего не работает!
$cat имеет следующие значения:
stdClass Object
(
[term_id] => 114
[name] => Ny testkategori
[slug] => ny-testkategori
[term_group] => 0
[term_taxonomy_id] => 115
[taxonomy] => product_cat
[description] =>
[parent] => 0
[count] => 2
[meta_id] => 3
[jigoshop_term_id] => 114
[meta_key] => order
[meta_value] => 1
)
Таким образом, $cat->slug и $cat->taxonomy являются допустимыми значениями.

Параметр tax_query принимает массив из массивов аргументов таксономического запроса (массив массивов), но вы используете только один массив. Правильный код выглядит следующим образом:
$uposts = get_posts(
array(
'post_type' => 'product',
'numberposts' => -1,
'tax_query' => array(
array(
'taxonomy' => $cat->taxonomy,
'field' => 'slug',
'terms' => array($cat->slug),
'operator' => 'IN',
)
)
)
);
Для получения дополнительной информации посетите эту страницу.

О, конечно же! Какой же я глупый, я потратил больше часа, пытаясь это исправить. Большое спасибо!

Тебе повезло, я потратил три дня на это :( Есть ли какая-то обратная связь о том, сколько постов получено или ПОЧЕМУ они не найдены? Много туториалов и примеров, даже здесь, но они либо о старой версии, либо у меня просто не работали.

URL документации изменился. Документация по параметрам таксономии WP_Query теперь находится здесь: https://developer.wordpress.org/reference/classes/wp_query/#taxonomy-parameters
