Ajouter plusieurs produits au panier avec 1 lien dans Woocommerce

Pour ajouter un produit dans le panier, il faut utiliser une URL de type :
www.domaine.com/?add-to-cart={ID_PRODUIT}.

Pour ajouter plusieurs produits dans le panier en 1 clic, nous allons utiliser :

  1. Une URL de type : www.domaine.com/?multiple-add-to-cart={ID_PRODUIT1}-{ID_PRODUIT2}-{ID_PRODUIT3} (les ID produits sont séparés par un tiret)
  2. le hook wp_loaded
  3. et la fonction WC()->cart->add_to_cart() exécutée dans une boucle.
[pastacode lang= »php » manual= »%3C%3Fphp%0Afunction%20MY_add_to_cart_action()%0A%7B%0A%09if%20(%20!%20empty(%20%24_REQUEST%5B’multiple-add-to-cart’%5D%20)%20)%20%7B%0A%09%09%24my_products%20%3D%20explode(%20′-‘%2C%20%24_REQUEST%5B’multiple-add-to-cart’%5D%20)%20%3B%20%0A%09%09foreach%20(%20%24my_products%20as%20%24my_product%20)%0A%09%09%7B%0A%09%09%09%24product%20%20%20%20%3D%20wc_get_product(%20%24my_product%20)%3B%0A%09%09%09if%20(%20%24product%20%26%26%20%24product-%3Eis_purchasable()%20)%0A%09%09%09%7B%0A%09%09%09%09WC()-%3Ecart-%3Eadd_to_cart(%20%24product-%3Eid%2C%201%20)%20%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09wp_redirect(%20’panier’%20)%3B%0A%09%09exit%3B%0A%09%7D%0A%7D%0Aadd_action(%20’wp_loaded’%2C%20’MY_add_to_cart_action’%2C%2020%20)%3B » message= » » highlight= » » provider= »manual »/]

Ce snippet fonctionne avec des produits simples. Il nécessite une adaptation pour des produits variables en faisant également passer les variations dans l’URL.


Si cet article "Ajouter plusieurs produits au panier avec 1 lien dans Woocommerce" vous a aidé, si vous avez des questions ou des améliorations à proposer, n'hésitez pas à me laisser un commentaire en bas de page !
Charlie Stram,
Développeur web freelance

Vous aimerez aussi...

1 réponse

  1. yassine dit :

    bonjour
    merci pour cet exemple, mais svp ou je peut rajouter : function MY_add_to_cart_action()….
    est-ce dans le fichier functions.php ou je dois créer un nouveau fichier.
    merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *