WP_Query() — ломается пагинация
-
Делаю выборку товаров при помощи WP_Query() в связке с аякс — нужно отфильтровать товары в каталоге при активном чекбоксе — одна выборка/при неактивном — другая выборка. Но я сталкиваюсь с проблемой — у меня не работает корректно пагинация. Из-за аякса в урл подтягивается /wp-admin/admin-ajax.php/page/2/ — и соответственно ссылка нерабочая. Помогите, пожалуйста — как сформировать пагинацию верно в данном случае?
Мои функции:
//Аякс - Только новинки function add_script_test() {?> <script type="text/javascript"> jQuery(document).ready(function ($) { // кликнули на кнопку $('#newest').change(function () { if($('#newest').is(":checked")) { $.ajax({ url: '/wp-admin/admin-ajax.php', // сделали запрос type: "POST", // указали метод data: { // передаем параметры отправляемого запроса action: 'my_ajax_action', // вызываем хук который обработает наш ajax запрос strID:$("input:checkbox").attr("id"), strState:"1" , // передаем параметры из кнопки }, success: function (data) {// получаем результат в переменной data $('.products').html(data); // выводим результат в новый див } }); } else { $.ajax({ url: '/wp-admin/admin-ajax.php', // сделали запрос type: "POST", // указали метод data: { // передаем параметры отправляемого запроса action: 'my_ajax_action', // вызываем хук который обработает наш ajax запрос strID:$("input:checkbox").attr("id"), strState:"0" , // передаем параметры из кнопки }, success: function (data) {// получаем результат в переменной data $('.products').html(data); // выводим результат в контейнер с продуктами } }); } }); }); </script> <?} add_action( 'wp_footer', 'add_script_test' ); // Выводим новинки или все товары add_action("wp_ajax_my_ajax_action", "k_ajax_my_ajax_action"); add_action("wp_ajax_nopriv_my_ajax_action", "k_ajax_my_ajax_action"); function k_ajax_my_ajax_action(){ // функция которая вызывается if ($_POST['strState']==1) {// проверяем Выбраны ли Новинки global $post, $wp_query; $args = array( 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC', 'posts_per_page' => 2, 'paged' => get_query_var( 'page' ), ); // Set the query $products = new WP_Query( $args ); // Standard loop if ( $products->have_posts() ) : while ( $products->have_posts() ) : $products->the_post(); // Your new HTML markup goes here wc_get_template_part( 'content', 'product' ); endwhile; wp_reset_postdata(); //Пагинация $temp_query = $wp_query; $wp_query = null; $wp_query = $products; the_posts_pagination(); // Reset main query object. $wp_query = null; $wp_query = $temp_query; endif; }else { // Если выбраны не новинки, выводим все товары global $post, $wp_query; $args = array( 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC', 'posts_per_page' => 9, 'paged' => get_query_var( 'page' ), ); // Set the query $products = new WP_Query( $args ); // Standard loop // if ( $products->have_posts() ) : while ( $products->have_posts() ) : $products->the_post(); // Your new HTML markup goes here // wc_get_template_part( 'content', 'product' ); endwhile; endif; wp_reset_postdata(); //Пагинация $temp_query = $wp_query; $wp_query = null; $wp_query = $products; the_posts_pagination(); // Reset main query object. $wp_query = null; $wp_query = $temp_query; } wp_die(); }
Просмотр 1 ответа (всего 1)
Просмотр 1 ответа (всего 1)
- Тема «WP_Query() — ломается пагинация» закрыта для новых ответов.