Как передать $wp_query в функцию глобально, через ajax запрос?
Делаю фильтр по произвольным полям... Запросы все сделал, все фильтруется, но не получаю в functions.php $wp_query, получаю пустой массив.
Делаю для того чтоб фильтр работал только в той категории, в которой нахожусь. А то он только по моим параметрам сейчас фильтрует, не смотря на категорию и все такое.
При изменении параметров фильтра данные отправляете через AJAX через admin-ajax.php?
Если да, то Wordpress не создает новый wp_query при запросе через AJAX. Нужно его создавать самому.
как я и говорил в ajax-функции btt_ajax() Wordpress не создает новый запрос к БД (так называемый Loop).
Нужно создать новый запрос и выполнить на основе своих данных, вроде этого:
$args = array(
'post_type' => 'product'
);
if ( isset( $_POST['value'] ) && sizeof($viscocity_ids) > 0 ) {
$args['tax_query'] = array( 'relation'=>'AND' ); // если несколько параметров для фильтрации добавляем AND
}
$args['tax_query'][] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $_POST['value']
);
if ( sizeof($viscocity_ids) > 0 ) {
$args['tax_query'][] = array(
'taxonomy' => 'pa_viscocity',
'field' => 'term_id',
'terms' => $viscocity_ids
);
}
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
wc_get_template_part( 'content', 'product' );
endwhile;
} else {
echo "Нет товаров, соответствующих выбранным параметрам фильтра!";
}
wp_reset_postdata();
die();
переменную $args заполняем данными из фильтра в соответствии со спецификацией класса WP_Query
сам сейчас делают почти тоже avto-market.by/auto/motor-oil
сам недавно отмучался ))))
принцип понятен? спрашивайте, если что...
главное разобраться с аргументами для WP_Query,
а то там накручен массив в массиве