¿Cómo excluir los términos de la consulta principal de la manera más eficaz?

4

Esta Q es un seguimiento de esta respuesta en la Q: "¿Cómo excluir un término específico para la búsqueda? ".

4 formas de filtrar publicaciones que tienen un término específico

Type                | Pro                   | Contra
--------------------------------------------------------
Run a new query     | Easy to implement     | Add. Queries
                                            | Add. time to execute the DB call + processing the parsing of the results
Inside the loop     | Easy to implement     | Sometimes Add. Queries
                                            | Add. time to execute
Modify the query    | Full control          | Hard to implement
                                            | Needs a lot of knowledge (preparing, DB interaction)
Add new query parts | No perform. impact    | Hard to get around
                    | Secure
                    | Full core support

El primer tipo imho es no una opción. Los "Tipos" 2 y amp; 3 ya están respondidas en la otra Q y ambas todavía tienen algunos remates.

Pregunta:

  1. ¿Cómo agregar un argumento tax_query adicional a la consulta principal usando (por ejemplo) el filtro pre_get_posts ?
  2. ¿Conoce formas adicionales de modificar la consulta principal?
pregunta kaiser 03.02.2012 - 23:06

1 respuesta

6

Puede establecer la consulta de taxonomía para la consulta principal usando pre_get_posts:

add_action( 'pre_get_posts', 'my_exclude_terms_from_query' );
function my_exclude_terms_from_query( $query ) {
    if ( $query->is_main_query() /* && whatever else */ ) {
        $tax_query = array (
                array(
                    'taxonomy' => 'category',
                    'terms' => array( 'cat-slug' ),
                    'field' => 'slug',
                    'operator' => 'NOT IN',
                )
        );
        $query->set( 'tax_query', $tax_query );
    }
}

Si tax_query ya está configurado y necesita modificarlo en su lugar, puede agarrar y luego agregar a la matriz $tax_query .

    
respondido por el helenhousandi 04.02.2012 - 21:29

Lea otras preguntas en las etiquetas