Скрыть пользовательскую кнопку, если корзина не пуста на AJAX Добавить в корзину в Woocommerce

У меня есть функция, которая проверяет, пуста ли корзина WooCommerce, и, если она есть, добавляет кнопку в заголовок страницы, которая ссылается на страницу моего магазина. Однако этот код работает только при загрузке страницы, но не будет обновляться (и удалять кнопку) после добавления в корзину через AJAX. Как определить, был ли товар добавлен в корзину?

function shop_button_when_empty_cart() {

if ( WC()->cart->get_cart_contents_count() == 0 ) { ?>
<a href="/shop"><button>Your cart is empty, go to shop</button></a>
<?php
}
}
add_action( 'storefront_header', 'shop_button_when_empty_cart', 40 );

0

Решение

Основан на этот существующий ответ Вот правильный способ сделать это на страницах архива Woocommerce, где Ajax включен при нажатии кнопки «Добавить в корзину». При добавлении ajax в корзину кнопка будет скрыта:

add_action( 'storefront_header', 'shop_button_when_empty_cart', 40 );
function shop_button_when_empty_cart() {

$style = WC()->cart->get_cart_contents_count() > 0 ? ' style="display: none;"' : '';
$class = 'class="button go-shop"';

echo '<a href="/shop" '.$class.$style.'>Your cart is empty, go to shop</a>';

if( is_shop() || is_product_category() || is_product_tag() ):
?>
<script type="text/javascript">
// Ready state
(function($){
$( document.body ).on( 'added_to_cart', function(){
$('a.button.go-shop').hide();
console.log('action');
});
})(jQuery);
</script>
<?php
endif;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). проверено и работает.

Связанные с:

1

Другие решения

Если вы используете ajax, то вам придется использовать обработчик ajax. У Woocommerce есть событие под названием added_to_cart
Здесь вы можете ввести свой код при вызове этого события,

$(document).on('added_to_cart',function(){
//here goes your button add code
}

$(document).on( 'added_to_cart removed_from_cart', function(){
//here goes if cart item is removed
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector