Der Parameter "tax_query" funktioniert nicht mit WP_Query

17

Ich habe einen benutzerdefinierten Beitragstyp namens "Episode". Im Anhang zu "Folge" gibt es eine benutzerdefinierte Taxonomie mit dem Namen "video_type", die zwei Begriffe enthält: "Bonus-Footage" und "Folge". "Folge" enthält zwei untergeordnete Begriffe "Staffel 1" und "Staffel 2" (weitere Staffeln werden in Zukunft hinzugefügt). Ich möchte nur den neuesten Beitrag des Typs "Episode" abrufen, aber keine Beiträge aus dem Begriff "Bonus-Footage" hinzufügen. Unten ist der Code, den ich dafür benutze:

<?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;
?>

Die Abfrage funktioniert wie erwartet, wenn ein Beitrag in einem der "Saison" -Begriffe der neueste ist. Wenn jedoch ein Beitrag in "Bonus-Footage" der neueste ist, wird dieser Beitrag geladen. Mit anderen Worten, meine "tax_query" -Parameter scheinen keinen Einfluss auf die Abfrage zu haben. Formatiere ich die "tax_query" nicht richtig oder fehle ich etwas anderes?

Ich habe auch versucht, "tax_query" wie folgt einzustellen:

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

aber ich bekomme immer noch das gleiche Ergebnis.

Josh Farneman
quelle

Antworten:

41

Der tax_queryParameter ist ein Array von Arrays , nicht nur ein Array.

Dies:

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

Sollte stattdessen so lauten:

'tax_query' => array(
    array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
    )
),
Chip Bennett
quelle
1
Vielen Dank, Chip. Ich bin gespannt, warum Wordpress es so erstellt hat.
Josh Farneman
3
Damit können mit Booleans mehrere Steuerabfragen durchgeführt werden. Siehe den verknüpften Codex-Eintrag im Abschnitt " Umgang mit mehreren Taxonomien ".
Chip Bennett
1
Arbeitete wie ein Zauber für mich! Danke Mann, ich habe meinen Kopf gegen die Wand geschlagen!
Charles Blackwell
Ich kann nicht scheinen, herauszufinden, wie man dieses in einen URL-Parameter übersetzt und ihn von WP_Query wirklich benutzt. Es wird einfach immer ignoriert.
Realgeek