Operatore tax_query "and" di WordPress non funziona come desiderato
Ho un tipo di post personalizzato chiamato image con una tassonomia personalizzata chiamata image_tag (è gerarchica come le categorie). Ecco alcuni esempi dei tag che potrebbero essere utilizzati:
Struttura (id: 25)
- Casa (id: 56)
- Grattacielo
Natura
- Animale
- Pianta (id: 41)
Voglio filtrare le immagini selezionando più tag in congiunzione con l'operatore "and". Per esempio, trovare tutte le foto con piante e case.
$query_args = array(
'post_type' => 'image',
'tax_query' => array(
array(
'taxonomy' => 'image_tag',
'terms' => array(41, 56), // ID di "pianta" e "casa"
'operator' => 'and',
),
),
);
Questo funziona bene, il problema inizia quando provo a includere i termini padre, per esempio:
$query_args = array(
'post_type' => 'image',
'tax_query' => array(
array(
'taxonomy' => 'image_tag',
'terms' => array(25, 41), // ID di "struttura" e "pianta"
'operator' => 'and',
),
),
);
In questo caso non ottengo risultati. Suppongo che, poiché sto usando l'operatore "and", WordPress non includa i figli del termine "Struttura". Qualcuno ha un'idea su come farlo funzionare o qualche altra soluzione per ottenere questo risultato?

non testato ma prova questo
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'image_tag', // tassonomia
'field' => 'term_id', // campo
'terms' => 25, // termini
'operator' => 'IN', // operatore
),
array(
'taxonomy' => 'image_tag',
'field' => 'term_id',
'terms' => 41,
'operator' => 'IN',
)
),
OPPURE
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'image_tag',
'field' => 'term_id',
'terms' => array(25,41), // array di termini
'operator' => 'IN',
),
),

Non posso ancora commentare, ma sulla risposta accettata, una leggera modifica alla seconda soluzione è 'operator' => 'AND'
, e la variabile relation
può essere eliminata. Sembra che la variabile operator
specifichi la relazione tra i termini all'interno del suo array, mentre la variabile relation
specifica la relazione per gruppi di termini.
Fonte
