Я пытаюсь заставить работать пользовательскую функцию ajax.Цель этой функции - запросить продукт woocommerce с помощью ajax и отобразить результат на странице магазина.
Для этого у меня есть список для отображения выбранного количества товара на странице:
После этого, когда я нажимаю, я загружаю Ajax-запрос с помощью этой функции JS:
var $content = $('#data-posts');
var $loader = $('#displaycount');
var cat = localStorage.getItem('ShopProductCategorySlug');
var ppp = 2;
var offset = $('#data-posts').find('.product').length;
$loader.on( 'click', 'li', load_ajax_posts );
urlboutique = 'http://showcase.pierregagliardi.com/Remy/boutiques';
function load_ajax_posts() {
if (!($loader.hasClass('post_loading_loader') || $loader.hasClass('post_no_more_posts'))) {
ppp = $(this).data('numpost');
localStorage.setItem('ShopNumPost', ppp);
$('#displaycount li').removeClass("current");
$(this).addClass("current");
$.ajax({
type: 'POST',
dataType: 'html',
url: ajaxnumpost.ajaxurl,
data: {
'cat': cat,
'ppp': ppp,
'offset': offset,
'action': 'ajax_numpost'
},
beforeSend : function () {
$("html,body").animate({ scrollTop: $('#main').offset().top - offset }, "slow");
$("#data-posts").hide("normal");
$('#shop-container').prepend( "<div id='pagination-loader'></div>" );
$( "#pagination-loader" ).show();
},
success: function (data) {
console.log(data);
var $this = $(this),
urls = window.location.href,
title = $this.attr('title') || null;
console.log(location.pathname);
var $data = $(data);
if ($data.length) {
$( "#pagination-loader" ).remove();
$("#data-posts").replaceWith($data.find("#data-posts"));
var grid = localStorage.getItem('ShopdisplayGrid');
if(grid != null){
$('#displaygrid li').removeClass('current');
localStorage.setItem('ShopdisplayGrid', grid);
$(".products .row > div").hide();
$(".products .row > div").removeClass().addClass('pl-sm-4s pr-sm-4s pt-4s pb-4s p-0s ' + BsCol);
$(".products .row > div").fadeIn(1000);
$('#displaygrid li[data-grid="'+grid+'"]').addClass('current');
}
} else {
$( "#pagination-loader" ).remove();
}
},
error : function (jqXHR, textStatus, errorThrown) {
$loader.html($.parseJSON(jqXHR.responseText) + ' :: ' + textStatus + ' :: ' + errorThrown);
console.log(jqXHR);
},
});
}
offset += ppp;
return false;}
, чтобы вызвать это действие php:
add_action( 'wp_ajax_nopriv_ajax_numpost', 'my_ajax_numpost' );
add_action( 'wp_ajax_ajax_numpost', 'my_ajax_numpost' );
function my_ajax_numpost() {
$ppp = (isset($_POST['ppp'])) ? $_POST['ppp'] : 3;
$cat = (isset($_POST['cat'])) ? $_POST['cat'] : 0;
$offset = (isset($_POST['offset'])) ? $_POST['offset'] : 0;
$tax = 'product_cat';
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
if ($cat == 'all') :
$tax_qry[] = [
'taxonomy' => $tax,
'field' => 'slug',
'terms' => $cat,
'operator' => 'NOT IN'
];
else :
$tax_qry[] = [
'taxonomy' => $tax,
'field' => 'slug',
'terms' => $cat,
];
endif;
$args = array(
'post_type' => 'product',
'posts_per_page' => $ppp,
'cat' => $cat,
'paged' => $paged,
'tax_query' => $tax_qry
);
$loop = new WP_Query($args);
if ($loop -> have_posts()) :
do_action( 'woocommerce_before_shop_loop' );
woocommerce_product_loop_start();
woocommerce_product_subcategories();
while ($loop -> have_posts()) :
$loop -> the_post();
do_action( 'woocommerce_shop_loop' );
wc_get_template_part( 'content', 'product' );
endwhile;
do_action( 'woocommerce_after_shop_loop' );
endif;
do_action( 'woocommerce_after_main_content' );
do_action( 'woocommerce_pagination' );
echo $loop->max_num_pages;
echo $paged;
echo $offset;
wp_reset_postdata();
wp_die();}
Я получил хорошийрезультат возвращается в моем js-запросе, но нумерация страниц не обновляется.
EG: если у меня есть 5 продуктов, которые я хочу отображать по 3 на страницу, это показывает, что страница 2 разбита на страницы без проблем.
Если затем я нажимаю на15, чтобы отобразить 15 продуктов на странице, в моей разбивке по страницам всегда отображаются 2 ссылки на страницы, а не только одна или никакая ссылка на страницы.
Любые изменения не обновят ссылку на страницы.
Как я могу обновить или заставить Woocommerce обновить нумерацию страниц?
Спасибо