Abfrage 1-Taxonomiebegriff, schließen Sie einen anderen aus

Hier ist der Code, den ich verwende, um eine einzelne Taxonomie für einen Begriff abzufragen, aber ausgeschlossene Beiträge für diesen Begriff, die auch zu einem anderen gehören.

In Englisch, das ist was ich will: Abfrage ‘Ressource-Typ’ für ‘Zeugnisse’, aber nicht ‘Zeugnisse’, die auch ‘Audio’ sind.

Tipps, um diesen Code zu optimieren, damit er funktioniert?

 'resource', 'posts_per_page' => 1, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'resource-type', 'field' => 'slug', 'terms' => array( 'testimonies' ) ), array( 'taxonomy' => 'resource-type', 'field' => 'slug', 'terms' => array( 'audio' ), 'operator' => 'NOT IN' ) ) ); ?> 

Solutions Collecting From Web of "Abfrage 1-Taxonomiebegriff, schließen Sie einen anderen aus"

Ich schätze, weil Sie zwei Bedingungen für eine Taxonomie testen, können Sie immer eine benutzerdefinierte SQL-Abfrage erstellen, etwa so:

 $querystr = " SELECT * FROM $wpdb->posts LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id) WHERE $wpdb->posts.post_type = 'resource' AND $wpdb->posts.post_status = 'publish' AND $wpdb->term_taxonomy.taxonomy = 'resource-type' AND $wpdb->terms.slug = 'testimonies' AND $wpdb->terms.slug NOT IN ('audio') ORDER BY $wpdb->posts.post_date DESC "; $pageposts = $wpdb->get_results($querystr, OBJECT); 

oder Sie können nur nach einem Begriff has_term() und durch has_term() innerhalb der Schleife ausschließen:

 if (!has_term('audio','resource-type',$post->ID)){ //post without audio }else{ //post with audio (skip or whatever) } 

keine Ahnung, ob das funktionieren würde, da ich nicht genug benutzerdefinierte Steuerbegriffe lokal habe, um dies jetzt zu testen, aber was ist, wenn Sie die AND-Beziehung zu OR ändern?

editiert b / ci las in den Kommentaren unter: http://ottopress.com/2010/wordpress-3-1-advanced-taxonomy-queries/ dass das, was Sie fragen, ziemlich unmöglich ist.

Sie könnten jedoch alle Audio-Zeugnisse abfragen und ihre IDs in ein Array spucken. Dann frage alle Zeugenaussagen ab und verwende das Array, das du im Parameter posts__not_in erstellt hast.