Operador "and" de tax_query en WordPress no funciona como se desea
Tengo un tipo de entrada personalizada de image con una taxonomía personalizada llamada image_tag (es jerárquica como las categorías). Aquí hay algunos ejemplos de las etiquetas que podrían usarse:
Estructura (id: 25)
- Casa (id: 56)
- Rascacielos
Naturaleza
- Animal
- Planta (id: 41)
Entonces, quiero filtrar las imágenes seleccionando múltiples etiquetas en conjunto con el operador "and". Por ejemplo, encontrar todas las fotos con plantas y casas.
$query_args = array(
'post_type' => 'image',
'tax_query' => array(
array(
'taxonomy' => 'image_tag',
'terms' => array(41, 56), // IDs de "planta" y "casa"
'operator' => 'and',
),
),
);
Eso funciona bien, el problema comienza cuando intento incluir los términos padre, por ejemplo:
$query_args = array(
'post_type' => 'image',
'tax_query' => array(
array(
'taxonomy' => 'image_tag',
'terms' => array(25, 41), // IDs de "estructura" y "planta"
'operator' => 'and',
),
),
);
Entonces no obtengo resultados. Supongo que debido a que estoy usando el operador "and", WordPress no incluye los hijos del término "Estructura". ¿Alguien tiene una idea de cómo puedo hacer que esto funcione, o alguna otra solución para lograr esto?
no probado pero prueba esto
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'image_tag',
'field' => 'term_id',
'terms' => 25,
'operator' => 'IN',
),
array(
'taxonomy' => 'image_tag',
'field' => 'term_id',
'terms' => 41,
'operator' => 'IN',
)
),
O
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'image_tag',
'field' => 'term_id',
'terms' => array(25,41),
'operator' => 'IN',
),
),
No puedo comentar todavía, pero en la respuesta aceptada, una ligera modificación de la segunda solución es 'operator' => 'AND', y se puede prescindir de la variable relation. Parece que la variable operator especifica la relación de los términos dentro de su array, mientras que la variable relation especifica la relación para grupos de términos.
Fuente