WooCommerce添加到购物车ajax load

时间:2018-03-17 06:38:49

标签: php ajax wordpress woocommerce

我在我的网站上创建了一个捆绑产品。因此,当有人购买时,他会在购物车中看到总产品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>

1 个答案:

答案 0 :(得分:0)

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实现,所以你可能需要在addsQuantity变量中实现它。