Relation OR statt AND – Gefilterte Term IDs in Schleife

Frage nicht mehr verwandt ..

Zuerst habe ich über die Beziehung OR / AND für Ergebnisse gesprochen, aber ich glaube, ich sollte mit ‘operator’ => ‘NOT IN’ arbeiten. Ich möchte die Ergebnisse abfragen, die mehrere Taxonomien erfüllen, anstatt alle Ergebnisse anzuzeigen, die 1 der Steuer erfüllen. Neue Frage wurde gestellt.

 30, 'post_type' => $post_type, 'post_status' => 'publish', 'paged' => $pg ); $terms = array(); foreach ($filters as $f) { if (!empty($f) && is_numeric($f) && $f > 0) { $terms[] = $f; }} if (!empty($terms)) { if (!is_array($query_args['tax_query'])) $query_args['tax_query'] = array(); $query_args['tax_query'] = array( 'relation' => 'OR', // NOT WORKING, STILL SHOWS 'AND' RESULTS array( 'taxonomy' => $post_type . '_filters', 'terms' => $terms, 'field' => 'id', )); } $queried_items = new WP_Query($query_args); } else { global $wp_query; $queried_items = $wp_query; } foreach ($queried_items->posts as $p) { $taxonomy = str_replace('%#%', $p->post_type, '%#%_filters'); $p->taxonomy = array(); $pfields = array("fields" => "all"); $terms = wp_get_post_terms($p->ID, $taxonomy, $pfields); $assgined_terms = array(); if ($terms && is_array($terms) && !empty($terms)) { foreach ($terms as $term) { if (!in_array($term->parent, $assgined_terms)) { $p->taxonomy[] = $term; array_push($assgined_terms, $term->parent); }} } }} 

Solutions Collecting From Web of "Relation OR statt AND – Gefilterte Term IDs in Schleife"

Nach dem Codex:

relation (string) – Die logische Beziehung zwischen jedem inneren Taxonomie-Array, wenn mehr als eins vorhanden ist. Mögliche Werte sind ‘UND’, ‘ODER’. Verwenden Sie nicht mit einem einzelnen inneren Taxonomie-Array.

Sie sind also auf dem richtigen Weg, aber Ihre tax_query ist falsch. relation ist Teil des äußeren tax_query und nicht Teil der Abfrageargumente auf oberster Ebene.

 $query_args['tax_query'] = array( 'relation' => 'OR', array( 'taxonomy' => $post_type . '_filters', 'terms' => $terms, 'field' => 'id', ) );