relação OU em vez de AND – ID de termo filtrada em loop

Pergunta já não relacionada …

Primeiro, pensei na relação OR / AND para obter resultados, mas acredito que deveria trabalhar com ‘operador’ => ‘NOT IN’. Gostaria de consultar os resultados que atendem a várias taxonomias em vez de exibir todos os resultados que atendem a 1 do imposto. Foi feita uma nova pergunta.

 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 "relação OU em vez de AND – ID de termo filtrada em loop"

Pelo Codex:

relação (string) – A relação lógica entre cada matriz de taxonomia interna quando há mais de um. Os valores possíveis são ‘AND’, ‘OR’. Não use com uma única matriz de taxonomia interna.

Então você está no caminho certo, mas seu tax_query está errado. relation faz parte da matriz de tax_query externa e não faz parte dos argumentos de consulta de nível superior.

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