Woocommerce - Ajouter un produit au panier par programmation via JS ou PHP [fermé]


32

J'utilise le plug-in Woocommerce pour faciliter une petite partie d'un site de commerce électronique et j'ai besoin d'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?


Proche voté comme trop localisé . Avez-vous essayé le support WooThemes?
Chip Bennett

3
@Chip Bennett j'ai oui, ils facturent 125 dollars juste pour rejoindre malheureusement. Cela entre à la fois dans Wordpress et dans Woocommerce - une balise valide ici, est donc sûrement valide? À moins que je ne me trompe "trop ​​localisée"?
Larry B

Cette question n'a rien à voir avec WordPress en particulier. Il s’agit uniquement du plugin WooCommerce lui-même - fonctionnalité du plugin et fonctions / code du plugin personnalisé. J'aurais peut-être voté en tant que sujet hors sujet , mais j'utilise généralement trop localisée pour répondre aux questions concernant les produits commerciaux ou les produits qui ont des options de support commercial.
Chip Bennett

12
@ChipBennett Woocommerce est uniquement destiné à Wordpress, il semble donc étrange de se cataloguer comme n’ayant rien à voir avec Wordpress. Comment utiliser la balise Woocommerce sans poser une question sur Woocommerce? En tout cas, j'ai trouvé la réponse que je vais poster maintenant au cas où quelqu'un d'autre aurait le même problème.
Larry B

11
@GHarping Merci d'avoir posé cette question, même si vous avez eu une sacrée merde pour cela. :)
Ryan

Réponses:


35

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]

7
cela ne fonctionne plus (wc v2.1.12). trouvé une solution et la partage ici
honk31

30

En 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() ) {

3
Comment pourrais-je appeler cette méthode via ajax?
Luca Reghellin

1
@Stratboy en utilisant la méthode recommandée pour ajouter des fonctions AJAX dans Wordpress: codex.wordpress.org/AJAX_in_Plugins - en gros, il vous suffit d'insérer les 3 lignes de la réponse dans le premier exemple php du codex wordpress.
CodeBrauer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.