Il parametro "tax_query" non funziona con WP_Query


17

Ho un tipo di post personalizzato chiamato "episodio". In allegato a "episodio" ho una tassonomia personalizzata chiamata "video_type" che contiene due termini: "bonus-footage" e "episodio"; "episodio" contiene due termini "stagione 1" e "stagione 2" (altre stagioni verranno aggiunte in futuro). Voglio prendere solo il post più recente del tipo "episodio" ma non includere alcun post dal termine "bonus-footage". Di seguito è riportato il codice che sto usando per questo:

<?php
$some_args = array(
    'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'bonus-footage',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'NOT IN'
     ),
    'posts_per_page' => 1,
    'post_type' => 'episode',
);

$s = new WP_Query( $some_args );

if ( $s->have_posts() ) : $s->the_post();
    // Do something with this post.
endif;
?>

La query funziona come previsto se un post in uno dei termini "stagionali" è il più recente, ma se un post in "bonus-footage" è il più recente, lo sta caricando. In altre parole, i miei parametri "tax_query" sembrano non avere alcun effetto sulla query. Non sto formattando correttamente "tax_query" o mi manca qualcos'altro?

Ho anche provato a impostare "tax_query" come di seguito:

'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
    'include_children' => true,
        'operator' => 'IN'
),

ma sto ancora ottenendo lo stesso risultato.

Risposte:


41

Il tax_queryparametro è un array di array , non solo un array.

Questo:

'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
),

Dovrebbe invece essere questo:

'tax_query' => array(
    array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
    )
),

1
Grazie Chip. Sono curioso del motivo per cui Wordpress ha costruito in questo modo?
Josh Farneman,

3
In modo che più query fiscali possano essere eseguite, usando i booleani. Vedi la voce Codex collegata, nella sezione " Gestione della tassonomia multipla ".
Chip Bennett,

1
Ha funzionato benissimo per me! Grazie amico, stavo sbattendo la testa dal muro su questo!
Charles Blackwell,

Non riesco a capire come tradurre questo in un parametro url e utilizzarlo effettivamente da WP_Query. Continua a essere ignorato.
realgeek,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.