2016-10-11 25 views
5

ajax経由で追加した商品がカートに追加されたときにミニカートを再設定する必要があります。私はこのようなフィルタwoocommerce_add_to_cart_fragmentsでカートの数量を更新するために管理:Woocommerceカートに入れるajaxとミニカート

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要素の魔女が.cart-内容に表示されているベローが

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

<div class="cart-contents"> 
    <?php echo WC()->cart->get_cart_contents_count(); ?> 
</div> 

です

このdivコンテンツをwoocommerce_add_to_cart_fragmentsと同じ方法で更新したいと思います。または、HTMLマークアップを変更して1 divのすべてを保持する必要がありますか?それを行うための一般的な方法やベストプラクティスは何ですか?

答えて

8

[OK]をので、私はちょうど私がそうのように、2倍の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; 

}); 

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; 

}); 

まず更新量とaotherさわやかなミニカートのビュー。

+1

この解決策は動作しますが、両方のフラグメントを単一の 'add_filter()'でマージするだけです。主な考え方は、 '$ fragments'配列を完全に作成することです。 –

関連する問題