¿Hay una forma de usar $ query-set ('tax_query' en el filtro de pre_get_posts?

14

¿Hay una forma de usar $query->set('tax_query', ...) en pre_get_posts filter? por ejemplo, el siguiente código no está alterando la consulta. Tenga en cuenta que estoy construyendo taxonomías desde $ y búsqueda personalizada.

function custom_search_filter($query) {
        ...

        // array('taxonomy' => 'category', 'field' => 'id', 'terms' => array( 41,42 ), 'operator' => 'IN')
        $taxonomies = implode(',', $taxonomy_arr);

        // https://wordpress.stackexchange.com/questions/25076/how-to-filter-wordpress-search-excluding-post-in-some-custom-taxonomies

        $taxonomy_query = array('relation' => 'AND', $taxonomies);

        $query->set('tax_query', $taxonomy_query);
    }

    return $query; 
}


add_filter( 'pre_get_posts', 'custom_search_filter', 999 );

Gracias de antemano.

    
pregunta José Pablo Orozco Marín 30.11.2011 - 21:10

2 respuestas

31

La variable $query en el filtro representa un objeto WP_Query , por lo que no debería pasar un nuevo objeto WP_Query al método para configurar las propiedades de ese objeto.

La pregunta que copió el código from usó incorrectamente el filtro, lo que creo que es el meollo de tu problema.

Sí, tax_query se puede usar dentro de un filtro / acción pre_get_posts (o similar parse_request ).

Aquí hay un ejemplo:
Especifique una taxonomía personalizada para consultas de búsqueda

function search_filter_get_posts($query) {
    if ( !$query->is_search )
        return $query;

    $taxquery = array(
        array(
            'taxonomy' => 'career_event_type',
            'field' => 'id',
            'terms' => array( 52 ),
            'operator'=> 'NOT IN'
        )
    );

    $query->set( 'tax_query', $taxquery );

}
add_action( 'pre_get_posts', 'search_filter_get_posts' );
    
respondido por el t31os 01.12.2011 - 14:32
2

Las consultas de impuestos requieren que también configure el objeto tax_query en la consulta ya que la consulta ya se ha analizado. Ver mi respuesta para Modificar las páginas de Taxonomy para excluir elementos en taxonomías infantiles .

    
respondido por el Tanner Moushey 03.05.2013 - 01:17

Lea otras preguntas en las etiquetas