¿Cuál es la diferencia entre la RELACIÓN "AND" y "OR" en TAX_QUERY?
Porque si uso:
'relation' => 'AND'
o
'relation' => 'OR'
los resultados son siempre los mismos. ¿Por qué?

tax_query
es un array bidimensional, cada sub-array puede considerarse como una consulta de taxonomía, típicamente tiene la forma:
array(
'taxonomy' => 'people',
'field' => 'slug',
'terms' => 'bob'
)
(por ejemplo, publicaciones con el término con slug 'bob', de la taxonomía 'people').
El hecho de que tax_query
sea un array bidimensional significa que puedes tener múltiples consultas de taxonomía. En este caso, puedes querer devolver publicaciones que cumplan todas las consultas de taxonomía (relation => 'AND'
) o publicaciones que cumplan al menos una consulta de taxonomía (relation => 'OR'
).
Como el codex indica:
Esta construcción te permite consultar múltiples taxonomías utilizando el parámetro relation en el primer array (exterior) para describir la relación booleana entre las consultas de taxonomía.
Por ejemplo:
$args = array(
'post_type' => 'post',
'tax_query' => array(
'relation' => 'AND', //Debe satisfacer todas las consultas de taxonomía
array(
'taxonomy' => 'movie_genre',
'field' => 'slug',
'terms' => 'action'
),
array(
'taxonomy' => 'actor',
'field' => 'id',
'terms' => array( 103, 115, 206 ),
'operator' => 'NOT IN'
)
)
);
$query = new WP_Query( $args );
devuelve todas las publicaciones con el término movie_genre
con slug 'action' Y que no tengan los términos actor
con IDs 103
, 115
, 206
.
Por otro lado (observa el cambio en relation
):
$args = array(
'post_type' => 'post',
'tax_query' => array(
'relation' => 'OR', //Debe satisfacer al menos una consulta de taxonomía
array(
'taxonomy' => 'movie_genre',
'field' => 'slug',
'terms' => 'action'
),
array(
'taxonomy' => 'actor',
'field' => 'id',
'terms' => array( 103, 115, 206 ),
'operator' => 'NOT IN'
)
)
);
$query = new WP_Query( $args );
devuelve todas las publicaciones que tengan el término movie_genre
con slug 'action' O que no tengan los términos actor
con IDs 103
, 115
, 206
(o que cumplan ambas condiciones).

Si cada publicación que coincide con una de las consultas de taxonomía también coincide con todas las demás, no habrá diferencia en las publicaciones devueltas entre establecer relation
como OR
o AND
. Esto es trivialmente cierto en el caso donde solo tienes una consulta de taxonomía.
