Kategorie aus WP_Query-Argumenten ausschließen funktioniert nicht

Alles andere in diesen Argumenten funktioniert großartig. Das einzige, was nicht funktioniert, ist der Ausschluss der nicht uncategorized Kategorie. Ich habe versucht sowohl 'cat' => '-1', wobei 1 die ID der nicht uncategorized Kategorie ist, die ich ausschließen möchte, als auch eine tax_query wie ich unten habe – der fragliche Teil ist:

 array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => 'uncategorized', 'operator' => 'NOT IN', ), 

Hier ist der vollständige Code:

 $tourDateArtists = get_terms( array( 'taxonomy' => 'category', 'hide_empty' => false, ) ); $today = strtotime('today'); foreach ( $tourDateArtists as $tourDateArtist ) { $tourDateArtist_query = new WP_Query( array( 'post_type' => 'tour-date', // 'posts_per_page' => -1, 'meta_key' => 'wpcf-tour-date', 'orderby' => 'meta_value_num', 'order' => 'ASC', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => array( $tourDateArtist->slug ), 'operator' => 'IN', ), array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => 'uncategorized', 'operator' => 'NOT IN', ), ), 'meta_query' => array( array( 'key' => 'wpcf-tour-date', 'value' => $today, 'compare' => '>=', 'type' => 'NUMERIC', ), ), )); if ( $tourDateArtist_query->have_posts() ) { echo '
slug . '" class="has-dates">'; echo '

slug . '">' . $tourDateArtist->name . '

'; echo ''; echo '
'; // echo ('Show More Dates'); } else { /* show 'no news' message if no tour dates */ echo '
slug . '" class="no-dates">'; echo '

' . $tourDateArtist->name . '

'; echo '

' . $tourDateArtist->name . ' is not on tour.' . '

'; echo '
'; } $tourDateArtist_query = null; wp_reset_postdata(); }

Es ist eine foreach aber es sollte jedes Mal gegen dieses tax_query Recht tax_query ? Irgendeine Idee, warum es die von mir definierte Kategorie nicht ausschließen würde: nicht uncategorized ?

Solutions Collecting From Web of "Kategorie aus WP_Query-Argumenten ausschließen funktioniert nicht"

Ich glaube, dass Ihre terms für Ihre tax_query ein Array sein müssen. Sie haben es so für den IN Teil der Abfrage gesetzt, aber nicht für den NOT IN Teil. Probieren Sie es aus:

 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => array( $tourDateArtist->slug ), 'operator' => 'IN', ), array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => array( 'uncategorized' ), 'operator' => 'NOT IN', ), ), 

Nach get_terms Suchen fand ich diese Option, die funktionierte: Hinzufügen eines exclude Parameters zur get_terms Liste oben. So was:

 $tourDateArtists = get_terms( array( 'taxonomy' => 'category', 'hide_empty' => false, 'exclude' => '1', ) ); 

tax_query bin mir immer noch nicht sicher, warum weder 'cat' => '-1', noch der particular tax_query param, den ich benutzte, funktionierten, aber das obige tut es, also wird es reichen.