Existe uma maneira de usar $ query-set ('tax_query' no filtro pre_get_posts?

14

Existe uma maneira de usar $query->set('tax_query', ...) no filtro pre_get_posts ? por exemplo, o próximo código não está alterando a consulta. Note que estou criando $ taxonomias de e pesquisa 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 );

Obrigado antecipadamente.

    
por José Pablo Orozco Marín 30.11.2011 / 21:10

2 respostas

31

A variável $query no filtro representa um objeto WP_Query , portanto, você não deve passar um novo objeto WP_Query para o método de configuração das propriedades desse objeto.

As questionam o código copiado de estava usando incorretamente o filtro, o que eu sinto é o ponto crucial do seu problema.

Sim, tax_query pode ser usado dentro de um filtro / ação pre_get_posts (ou similarmente parse_request ).

Aqui está um exemplo:
Especifique uma taxonomia personalizada para consultas de pesquisa

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' );
    
por t31os 01.12.2011 / 14:32
2

As consultas fiscais exigem que você também defina o objeto tax_query na consulta, uma vez que a consulta já foi analisada. Veja minha resposta para Modificar páginas de taxonomia para excluir itens em taxonomias infantis .

    
por Tanner Moushey 03.05.2013 / 01:17