tax_query в get_posts() не работает?

11 апр. 2013 г., 11:30:53
Просмотры: 38.6K
Голосов: 9

Я пытаюсь вывести все записи из каждой таксономии для пользовательского типа записей 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 являются допустимыми значениями.

0
Все ответы на вопрос 1
3
25

Параметр 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',
            )
         )
    )
);

Для получения дополнительной информации посетите эту страницу.

11 апр. 2013 г. 11:39:32
Комментарии

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

qwerty qwerty
11 апр. 2013 г. 12:30:07

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

piotao piotao
8 нояб. 2018 г. 15:48:56

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

Tomas Eklund Tomas Eklund
23 мар. 2020 г. 18:00:12