Care este diferența dintre RELATION "AND" și "OR" în TAX_QUERY?
Pentru că dacă folosesc:
'relation' => 'AND'
sau
'relation' => 'OR'
rezultatele sunt întotdeauna aceleași. De ce?

tax_query
este un array bidimensional, fiecare sub-array poate fi considerat o interogare de taxonomie, de obicei având forma:
array(
'taxonomy' => 'people',
'field' => 'slug',
'terms' => 'bob'
)
(de exemplu, postări care conțin termenul cu slug-ul 'bob' din taxonomia 'people').
Faptul că tax_query
este un array bidimensional înseamnă că puteți avea mai multe interogări de taxonomie. În acest caz, puteți dori să returnați postări care se potrivesc cu toate interogările de taxonomie (relation => 'AND'
) sau postări care se potrivesc cu cel puțin una dintre interogările de taxonomie (relation => 'OR'
).
După cum menționează codex-ul:
Această construcție vă permite să interogați mai multe taxonomii folosind parametrul relation în primul array (exterior) pentru a descrie relația booleană între interogările de taxonomie.
De exemplu:
$args = array(
'post_type' => 'post',
'tax_query' => array(
'relation' => 'AND', //Trebuie să satisfacă toate interogările de taxonomie
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 );
returnează toate postările care au termenul movie_genre
cu slug-ul 'action' ȘI nu au termenii actor
cu ID-urile 103
, 115
, 206
.
Pe de altă parte (observați schimbarea relation
):
$args = array(
'post_type' => 'post',
'tax_query' => array(
'relation' => 'OR', //Trebuie să satisfacă cel puțin o interogare de taxonomie
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 );
returnează toate postările care au fie termenul movie_genre
cu slug-ul 'action' SAU nu au termenii actor
cu ID-urile 103
, 115
, 206
(sau satisfac ambele condiții).

Dacă fiecare postare care se potrivește cu una dintre interogările de taxonomie se potrivește și cu toate celelalte, nu va exista nicio diferență în postările returnate între setarea relation
la OR
și AND
. Acest lucru este evident adevărat în cazul în care ai doar o singură interogare de taxonomie.
