Внести изменения в таксономии, чтобы исключить или добавить элементы через хуки или фильтры

Гость | 24 октября 2017, 22:57 | 1

Нужно внести изменения в $wp_query так, чтобы это работало через фильтры. Основная проблема кроется в том, что после объявления WP_Query, tax_query уже не изменить. Скажем, вот код:

function dummy_test( $wp_query){
$tax_query = array(
             'relation' => 'OR',
             array(
               'taxonomy' => 'tax1',
               'terms' => array( 'term1', 'term2' ),
               'field' => 'slug',
             ),
             array(
               'taxonomy' => 'tax2',
               'terms' => array( 'term-a', 'term-b' ),
               'field' => 'slug',
             ),
           );


$wp_query->set( 'tax_query', $tax_query );

);
add_action('pre_get_posts','dummy_test');

Что можно придумать?


Wordpress

Решения

Чтобы внести изменения в tax_query, достаточно получить текущие данные, а затем добавить к ним свои фильтры.

function my_tax_query( $query ) {
    $package_id = 12345;
    $tax_query = array(
        'taxonomy' => 'package_id',
        'terms'    => array( $package_id ),
        'field'    => 'slug',
        'operator' => 'IN',
    );
    $query->tax_query->queries[] = $tax_query; 
    $query->query_vars['tax_query'] = $query->tax_query->queries;
}
add_action( 'pre_get_posts', 'my_tax_query' );