J'utilise le plug-in Woocommerce pour faciliter une petite partie d'un site de commerce électronique et je dois ajouter des produits à son panier via un appel ou une fonction plutôt que d'utiliser ses propres boutons "Ajouter au panier".
Par cela, je veux dire essentiellement envoyer à Woocommerce un SKU et une quantité, par exemple, et mettre à jour le panier.
sendToCart('123456', 55);
etc
J'ai parcouru la documentation et je n'arrive pas à trouver une référence à ce genre de chose. Quelqu'un peut-il suggérer comment je pourrais y parvenir?
OK, voici comment je l'ai résolu à la fin. Un exemple rapide et sale utilise JQuery.
<a id="buy" href="#">Buy this!</a>
<script>
$('#buy').click(function(e) {
e.preventDefault();
addToCart(19);
return false;
});
function addToCart(p_id) {
$.get('/wp/?post_type=product&add-to-cart=' + p_id, function() {
// call back
});
}
</script>
Cela fait juste une demande AJAX GET à l'URL du panier
/wp/?post_type=product&add-to-cart=[PRODUCT_ID]
Dans PHP j'ai réussi à le faire de cette façon:
global $woocommerce;
$woocommerce->cart->add_to_cart($product_id);
La méthode est dans woocommerce/classes/class-wc-cart.php:
/**
* Add a product to the cart.
*
* @param string $product_id contains the id of the product to add to the cart
* @param string $quantity contains the quantity of the item to add
* @param int $variation_id
* @param array $variation attribute values
* @param array $cart_item_data extra cart item data we want to pass into the item
* @return bool
*/
public function add_to_cart( $product_id, $quantity = 1, $variation_id = '', $variation = '', $cart_item_data = array() ) {