/ / Automatyczne "odświeżanie" koszyka zakupów woocommerce po programowym dodaniu do koszyka - javascript, php, wordpress, woocommerce

Automatyczne "odświeżanie" koszyka zakupów woocommerce po programowym dodaniu do koszyka - javascript, php, wordpress, woocommerce

Używam woocommerce w wordpress.

Wyświetlam koszyk na jednej z moich stron, używając:

 <div id="shopping-cart"><?php echo do_shortcode("[woocommerce_cart]");?></div>

Dodaję produkt do tego koszyka, używając mojej własnej funkcji, gdy użytkownik kliknie przycisk za pomocą tego kodu:

 function addToCart(p_id){
alert("Adding to cart:"+p_id);
jQuery.get("/wordpress/?post_type=product&add-to-cart=" + p_id, function(response) {
// call back
alert(response);
});

//jQuery("#shopping-cart").append("[woocommerce_cart]");
alert("Added to cart:"+p_id);
}

Nazywam tego javascript następującym kodem:

 <button type="button" onclick="return addToCart(18);">Add to cart</button>

Kod działa, ale koszyk utworzony za pomocą kodu do_short nie aktualizuje się po zakończeniu żądania ajax.

Czy ktoś może mi powiedzieć, jak automatycznie zaktualizować koszyk po zakończeniu żądania pobierania?

Odpowiedzi:

1 dla odpowiedzi № 1

Dokumentacja na pomoc :)

// Ensure cart contents update when products are added to the cart via AJAX (place the following in functions.php)
add_filter("add_to_cart_fragments", "woocommerce_header_add_to_cart_fragment");

function woocommerce_header_add_to_cart_fragment( $fragments ) {
global $woocommerce;
ob_start();
?>
<a class="cart-contents" href="<?php echo $woocommerce->cart->get_cart_url(); ?>" title="<?php _e("View your shopping cart", "woothemes"); ?>"><?php echo sprintf(_n("%d item", "%d items", $woocommerce->cart->cart_contents_count, "woothemes"), $woocommerce->cart->cart_contents_count);?> - <?php echo $woocommerce->cart->get_cart_total(); ?></a>
<?php
$fragments["a.cart-contents"] = ob_get_clean();
return $fragments;
}

Prawdopodobnie będziesz musiał dostosować kod HTML, aby pasował do twojego projektu.


0 dla odpowiedzi nr 2

Spróbuj dodać ten kod po dodaniu alertu do koszyka ...

location.reload();

0 dla odpowiedzi № 3

Na koniec tworzę wywołanie Ajax, które nazywa sięFunkcja PHP, która zwróciła wynik wywołania do_shortcode ("[woocommerce_cart]"); co po prostu wkładam do tego samego div po opróżnieniu - działa ładnie :)

Musiałem użyć Ajax przez woocommerce, aby faktycznie uzyskać wywołanie do_shortcode w PHP, aby działało pomyślnie zgodnie z:

http://codex.wordpress.org/AJAX_in_Plugins