Я создаю веб-сайт, где пользователи могут добавить товар в корзину (используя ajax) с домашней страницы. Я использую JS функцию для этого, и она работает. Кроме того, у меня есть функция, которая обновляет пользовательский счетчик корзины из заголовка.
Если я на странице магазина или корзины, фрагменты woocommerce работают отлично, обновляя мой пользовательский счетчик корзины. Но когда я на главной странице, счетчик корзины просто обновляется, если я обновлю sh любую другую страницу.
Я попытался вызвать событие фрагментов после запуска события 'Added_to_cart', как вы можете видеть ниже , но это не сработало.
Javascript Функция, которая вызывает событие 'Added_to_cart' на домашней странице
$('.homepage_add_to_cart_button').on('click', function(e) {
e.preventDefault();
$thisbutton = $(this);
id = $(this).val();
addToCart(id);
return false;
});
function addToCart(p_id) {
var data = {
action: 'ql_woocommerce_ajax_add_to_cart',
product_id: p_id,
};
$.ajax({
type: 'post',
url: '?add-to-cart='+p_id,
data: data,
beforeSend: function (response) {
$thisbutton.removeClass('added').addClass('loading');
},
complete: function (response) {
$thisbutton.addClass('added').removeClass('loading');
},
success: function (response) {
if (response.error & response.product_url) {
window.location = response.product_url;
return;
} else {
$(document.body).trigger('added_to_cart', [response.fragments, response.cart_hash, $thisbutton]);
$(document.body).trigger('wc_fragment_refresh');
}
},
});
}
I ' используя этот код для функций. php фрагментов woocommerce, чтобы обновить счетчик пользовательских корзин, который у меня есть в заголовке.
function holistic_refresh_cart_count($fragments) {
ob_start();
?>
<span class="header-cart-count">
<?php echo WC()->cart->get_cart_contents_count(); ?>
</span>
<?php
$fragments['.header-cart-count'] = ob_get_clean();
return $fragments;
}
add_filter( 'woocommerce_add_to_cart_fragments', 'holistic_refresh_cart_count');