WooCommerce добавить в корзину ajax load



Я создал пакет продуктов на своем веб-сайте. Поэтому, когда кто-то его купит, он увидит в корзине всего продуктов 4.Кроме того, я показываю общий продукт на верхней мини-тележке. Теперь я хочу обновить это топовое количество мини-корзины с помощью ajax, когда кто-то нажимает на кнопку Добавить в корзину.



Вот мой код ниже:



$total_products=0;
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$total_products=$total_products+$cart_item['quantity'];

}
?>

<div class="shopping-cart-header <?php echo $height; ?>">

<a class="mk-shoping-cart-link-2" href="<?php echo WC()->cart->get_cart_url();?>">
<?php Mk_SVG_Icons::get_svg_icon_by_class_name(true, 'mk-moon-cart-2'); ?>
<span class="mk-header-cart-count"><?php echo $total_products;?></span>
</a>

<div class="mk-shopping-cart-box">
<?php the_widget('WC_Widget_Cart');?>
<div class="clearboth"></div>
</div>

</div>
753   1  

1 ответ:

Woocommerce имеет свои собственные события ajax, которые вы можете найти в wp-content / plugins/woocommerce/assets/js/frontend / add-to-cart.файл js. Внутри него вы можете найти такой триггер

// Trigger event so themes can refresh other areas.
$( document.body ).trigger( 'added_to_cart', [ response.fragments, response.cart_hash, $thisbutton ] );

Вам нужно переопределить эти события в файле JS вашей темы.

(function( $, document, window ) {

    // Add to cart event
    // NOTE: called on document ready event
    $( function() {
        $( document ).off( 'added_to_cart' ).on( 'added_to_cart', function( event, fragments, cart_hash, $button ) {
            $button = typeof $button === 'undefined' ? false : $button;

            // update counter
            var $counter = $( '.mk-header-cart-count' );
            var currentQuantity = parseInt( $counter.data( 'eg-product-count' ), 10 );
            var addedQuantity = parseInt( $button.data( 'quantity' ), 10 );
            var newQuantity = currentQuantity + addedQuantity;
            $counter.text( newQuantity );

            // Replace fragments.
            if ( fragments ) {
                $.each( fragments, function( key, value ) {
                    $( key ).replaceWith( value );
                });

                $( document.body ).trigger( 'wc_fragments_loaded' );
            }

            $( document.body ).trigger( 'cart_page_refreshed' );
        } );

    } );
})(jQuery, document, window);

Я не знаю, как вы интегрируете реализацию bundle, поэтому, возможно, вам нужно реализовать ее в переменной addedQuantity.

Comments

    Ничего не найдено.