Operatorul tax_query "and" din Wordpress nu funcționează conform așteptărilor
Am un tip de postare personalizată de tip image cu o taxonomie personalizată numită image_tag (este ierarhică asemenea categoriilor). Iată câteva exemple de etichete care ar putea fi utilizate:
Structură (id: 25)
- Casă (id: 56)
- Zgârie-nori
Natură
- Animal
- Plantă (id: 41)
Așadar, vreau să filtrez imaginile selectând mai multe etichete în conjuncție cu operatorul "and". De exemplu, să găsesc toate fotografiile cu plante și case.
$query_args = array(
'post_type' => 'image',
'tax_query' => array(
array(
'taxonomy' => 'image_tag',
'terms' => array(41, 56), // ID-urile pentru "plantă" și "casă"
'operator' => 'and',
),
),
);
Asta funcționează bine, problema apare când încerc să includ termenii părinte, de exemplu:
$query_args = array(
'post_type' => 'image',
'tax_query' => array(
array(
'taxonomy' => 'image_tag',
'terms' => array(25, 41), // ID-urile pentru "structură" și "plantă"
'operator' => 'and',
),
),
);
Atunci nu obțin niciun rezultat. Presupun că deoarece folosesc operatorul "and", WordPress nu include copiii termenului "Structură". Are cineva vreo idee cum pot face acest lucru să funcționeze sau o altă soluție pentru a obține acest rezultat?

netestat, dar încearcă această variantă
'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',
)
),
SAU
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'image_tag',
'field' => 'term_id',
'terms' => array(25,41),
'operator' => 'IN',
),
),

Încă nu pot comenta, dar în răspunsul acceptat, o ușoară modificare a celei de-a doua soluții este 'operator' => 'AND'
, iar variabila relation
poate fi eliminată. Se pare că variabila operator
specifică relația dintre termenii din interiorul array-ului său, în timp ce variabila relation
specifică relația pentru grupurile de termeni.
Sursa
