Woocommerce添加到购物车ajax和迷你购物车


Woocommerce add to cart ajax and mini-cart

当产品通过ajax添加到购物车时,我需要重新填充迷你购物车。我设法用过滤器woocommerce_add_to_cart_fragments更新购物车数量,如下所示:

add_filter( 'woocommerce_add_to_cart_fragments', function($fragments) {
    ob_start();
    ?>
    <div class="cart-contents">
        <?php echo WC()->cart->get_cart_contents_count(); ?>
    </div>
    <?php $fragments['div.cart-contents'] = ob_get_clean();
    return $fragments;
} );
我的HTML标记是
<div class="cart-contents">
    <?php echo WC()->cart->get_cart_contents_count(); ?>
</div>

下面是隐藏的div按钮,显示在。cart-contents悬停

<div class="header-quickcart"><?php woocommerce_mini_cart(); ?></div>

我想更新这个div内容相同的方式或类似于woocommerce_add_to_cart_fragments。或者我应该改变HTML标记并将所有内容保存在一个div中?通常的方法或最佳实践是什么?

好的,所以我刚刚意识到我可以使用woocommerce_add_to_cart_fragments过滤器2次,像这样:

add_filter( 'woocommerce_add_to_cart_fragments', function($fragments) {
    ob_start();
    ?>
    <div class="cart-contents">
        <?php echo WC()->cart->get_cart_contents_count(); ?>
    </div>
    <?php $fragments['div.cart-contents'] = ob_get_clean();
    return $fragments;
} );
add_filter( 'woocommerce_add_to_cart_fragments', function($fragments) {
    ob_start();
    ?>
    <div class="header-quickcart">
        <?php woocommerce_mini_cart(); ?>
    </div>
    <?php $fragments['div.header-quickcart'] = ob_get_clean();
    return $fragments;
} );

第一个更新数量和另一个刷新迷你购物车视图。