2016-10-11 84 views
5

Muszę ponownie wypełnić mini-cart, gdy produkt dodany przez ajax dodaj do koszyka. Udaje mi się aktualizować koszyk ilość filtrów z woocommerce_add_to_cart_fragments tak:Woocommerce dodaj do koszyka ajax i mini-cart

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; 

}); 

A mój HTML znaczniki są

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

Bellow, który jest ukryty div czarownica pokazano na .cart-zawartość najechaniu

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

Chcę zaktualizować tę zawartość div w taki sam sposób lub podobnie do woocommerce_add_to_cart_fragments. Czy powinienem zmienić znaczniki HTML i trzymać wszystko w 1 div? Jaki jest wspólny sposób lub najlepsza praktyka, aby to zrobić?

Odpowiedz

8

Ok, więc po prostu sobie sprawę, że mogę używać woocommerce_add_to_cart_fragments filtr 2 razy, tak jak poniżej:

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; 

}); 

First uaktualniania ilość i aother orzeźwiający mini-Cart.

+1

To rozwiązanie zadziała, chociaż wystarczy scalić oba fragmenty jednym 'add_filter()'. Główną ideą jest idealne ukształtowanie tablicy '$ fragmentów'. –