2016-08-23 2 views
1

У меня есть пользовательский почтовый тип изображения с пользовательской таксономии под названием IMAGE_TAG (это иерархическая как категории). Вот некоторые примеры тегов, которые могут быть использованы:Wordpress tax_query «и» оператор не работает, как ожидалось

Structure (id: 25) 
- House (id: 56) 
- Skyscraper 
Nature 
- Animal 
- Plant (id: 41) 

Итак, я хочу, чтобы развернуть через изображения, выбрав несколько тегов в сочетании с «и» оператором. Например, найти все фотографии с завод s и дом s.

$query_args = array(
    'post_type' => 'image', 
    'tax_query' => array(
    array(
     'taxonomy' => 'image_tag', 
     'terms' => array(41, 56), // IDs of "plant" and "house" 
     'operator' => 'and', 
    ), 
), 
); 

Это работает нормально, проблема начинается тогда, когда я пытаюсь включить родительские термины, например:

$query_args = array(
    'post_type' => 'image', 
    'tax_query' => array(
    array(
     'taxonomy' => 'image_tag', 
     'terms' => array(25, 41), // IDs of "structure" and "plant" 
     'operator' => 'and', 
    ), 
), 
); 

Тогда я не получаю никаких результатов. Я предполагаю, что, поскольку я использую оператор «и», Wordpress не включает дочерние элементы «Структура». Кто-нибудь есть идея, как я могу заставить это работать?

+0

Два коротких вопроса: 1) Только для конечно. Можете ли вы на 100% подтвердить наличие сообщений, которые должны быть возвращены? 2) Вы пытались явно установить 'include_children' в' true'? Я считаю, что, по крайней мере, это была ошибка, которая требовала от вас этого (несмотря на то, что она обычно была по умолчанию). – mrwweb

+0

ОК: 1) да, есть сообщения, помеченные обоими из этих терминов (или их детей), и 2) да, я тоже экспериментировал с 'include_children', и, к сожалению, это, похоже, не было эффект. – dkeeling

+0

Полезно знать. Следующим моим предположением был ответ @ hubert-popp ниже. Я бы попробовал это. – mrwweb

ответ

1

Так оно и должно выглядеть следующим образом:

'relation' => 'AND', 
    array(
     'taxonomy' => 'image_tag', 
      'field' => 'term_id', 
      'terms' => array(25), 
     ), 
     array(
     'taxonomy' => 'image_tag', 
      'field' => 'term_id', 
      'terms' => array(41), 
     ), 
     ), 
0

Обновление: Вы забыли закрыть «термины» и «оператор» на 'как этот

$query_args = array(
    'post_type' => 'image', 
    'tax_query' => array(
    array(
     'taxonomy' => 'image_tag', 
     'field' => 'term_id', 
     'terms' => array(25, 41), // IDs of "structure" and "plant" 
     'operator' => 'in' 
    ), 
), 
); 
+0

Спасибо за ответ! К сожалению, для меня это не меняет. (Я думаю, что 'term_id' является значением по умолчанию для этого параметра' field'.) – dkeeling

+0

, но используйте мой код, потому что у вас есть некоторые ошибки в вашем коде, например, «условия, которые вы должны закрыть, как это» terms »также« operator » –

+0

Спасибо, я фиксировали эти опечатки. Это всего лишь выборка кода, который я использовал, а не полный пример, поэтому я все равно получаю тот же результат. – dkeeling

0
$query_args = array(
'post_type' => 'image', 
'tax_query' => array(
    'relation' => 'AND', 
     array(
     'taxonomy' => 'image_tag', 
     'field' => 'term_id', 
     'terms' => array(25, 41), // IDs of "structure" and "plant" 
     'operator' => 'in' 
    ), 
    ), 
); 

У меня была аналогичная проблема, дать это попробовать!

+0

Спасибо за ваш ответ! Это действительно, но, к сожалению, не так, как я ищу. Это решение возвращает изображения, которые находятся в ** структуре ** и изображениях, которые находятся в ** растении ** (что расширяет поиск). Мне нужно сузить поиск, возвращая изображения, которые имеют как ** структуру **, так и ** заводские ** теги (или дочерние элементы этих тегов). ... Я не знаю, имеет ли смысл то, как я описываю это, lol – dkeeling

Смежные вопросы