Я создаю собственную тему, в которой мне нужно изменить цвет фона корзины в зависимости от состояния корзины. Условие Если корзина пуста, фон должен отображаться серым цветом, а если элемент в корзине означает, что количество корзин больше 0, то должно отображаться оранжевый цвет фона.
<?php $ql_cart_wrap_color = (WC()->cart->get_cart_contents_count() == 0 ) ? 'ql_cart_wrap_color_gray' : 'ql_cart_wrap_color_orange';?>
<div class="ql_cart_wrap woo_amc_open_active <?php echo $ql_cart_wrap_color; ?>">
<button href="javascript:" class="ql_cart-btn">
<span class="count"><?php echo esc_html( WC()->cart->cart_contents_count );?></span>
<span class="cart-header"></span>
</button>
</div>
Здесь $ql_cart_wrap_color;
изменить класс с ql_cart_wrap_color_gray
на ql_cart_wrap_color_orange
, он отлично работает при добавлении в корзину товара. Но когда мы убрали товар из корзины, я имею в виду, что корзина снова становится пустой и больше никогда не переходит на серый фон.
ТАК Я использую фильтр woocommerce_add_to_cart_fragments
, теперь он работает только при добавлении в корзину
function dynamic_header_add_to_cart_fragment_refresh( $fragments ) {
ob_start();
?>
<?php $ql_cart_wrap_color = (WC()->cart->get_cart_contents_count() == 0 ) ? 'ql_cart_wrap_color_grey' : 'ql_cart_wrap_color_orange';?>
<div class="ql_cart_wrap woo_amc_open_active <?php echo $ql_cart_wrap_color; ?>">
<button href="javascript:" class="ql_cart-btn">
<span class="count"><?php echo esc_html( WC()->cart->cart_contents_count );?></span>
<span class="cart-header"></span>
</button>
</div>
<?php
$fragments['.ql_cart_wrap'] = ob_get_clean();
return $fragments;
}
add_filter( 'woocommerce_add_to_cart_fragments', 'dynamic_header_add_to_cart_fragment_refresh' );
Есть ли другой способ обновить его без перезагрузки страницы?