it-swarm.com.de

Der Parameter "tax_query" funktioniert nicht mit WP_Query

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 erwartungsgemäß, 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.

15
Josh Farneman

Der Parameter tax_query ist ein Array von Arrays , nicht nur ein Array.

Diese:

'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'
    )
),
37
Chip Bennett