WooCommerce - Aggiungere un prodotto al carrello programmaticamente tramite JS o PHP

25 mag 2012, 16:44:28
Visualizzazioni: 125K
Voti: 38

Sto utilizzando il plugin WooCommerce per gestire una piccola parte e-commerce di un sito e ho bisogno di aggiungere prodotti al carrello tramite una chiamata o funzione invece di utilizzare i suoi pulsanti 'aggiungi al carrello'.

In pratica, vorrei inviare a WooCommerce un codice SKU e una quantità, per esempio, e far aggiornare il carrello.

sendToCart('123456', 55);

ecc

Ho esaminato la documentazione ma non riesco a trovare riferimenti a questo tipo di funzionalità. Qualcuno può suggerire come potrei realizzare questo?

10
Commenti

Votato per la chiusura come troppo localizzato. Hai provato a contattare il supporto di WooThemes?

Chip Bennett Chip Bennett
25 mag 2012 17:04:28

@Chip Bennett Sì, ma purtroppo chiedono 125 dollari solo per l'iscrizione. Questo rientra sia in WordPress che in Woocommerce - che è un tag valido qui, quindi dovrebbe essere valido, no? A meno che non stia fraintendendo il significato di "troppo localizzato"?

Larry B Larry B
25 mag 2012 17:21:15

Questa domanda non ha nulla a che fare specificamente con WordPress. Riguarda solo il plugin WooCommerce stesso - funzionalità del plugin e codice/funzioni personalizzate del plugin. Avrei potuto votare per la chiusura come fuori tema, ma di solito uso troppo localizzato per domande su prodotti commerciali o prodotti che hanno opzioni di supporto a pagamento.

Chip Bennett Chip Bennett
25 mag 2012 17:27:21

@ChipBennett WooCommerce è solo per WordPress quindi sembra strano categorizzarlo come niente a che fare con WordPress. Come si potrebbe usare il tag WooCommerce se non per porre una domanda su WooCommerce? In ogni caso ho trovato la risposta che pubblicherò ora nel caso qualcun altro abbia lo stesso problema.

Larry B Larry B
25 mag 2012 17:46:28

Non ho detto che WooCommerce non abbia niente a che fare con WordPress, ma piuttosto che la tua domanda specifica non ha niente a che fare con WordPress. La differenza tra i due è fondamentale.

Chip Bennett Chip Bennett
25 mag 2012 17:47:49

@ChipBennett Beh, dovrei dissentire. Perché esiste un tag WooCommerce se non per fare domande su WooCommerce. WooCommerce non è uno strumento standalone in alcun modo, quindi qualsiasi cosa relativa a WooCommerce è pertinente a WordPress. Ma questa è solo la mia opinione ovviamente.

Larry B Larry B
25 mag 2012 17:57:07

Per favore leggi le FAQ relative all'ambito delle domande per WPSE: "Nota che noi non gestiamo domande... non specifiche per WordPress (anche se si verificano nel suo contesto)." Solo perché WooCommerce funziona nel contesto di WordPress non significa che ogni singola domanda su WooCommerce rientri nell'ambito di WPSE.

Chip Bennett Chip Bennett
25 mag 2012 18:03:05

Per favore pubblica le risposte come risposte, non come modifiche alla domanda originale. Per favore leggi le FAQ in modo da comprendere come funzionano i siti di domande e risposte StackExchange.

Chip Bennett Chip Bennett
25 mag 2012 18:18:33

Devo aspettare 8 ore poiché rep<10, quindi lo farò dopo.

Larry B Larry B
25 mag 2012 18:56:01

@GHarping Grazie per aver posto questa domanda, anche se hai ricevuto un sacco di critiche per questo. :)

Ryan Ryan
9 gen 2013 06:42:35
Mostra i restanti 5 commenti
Tutte le risposte alla domanda 2
2
37

OK, quindi ecco come ho risolto alla fine. Un esempio rapido e semplice, che utilizza JQuery.

<a id="buy" href="#">Acquista questo!</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() {
             // callback
          });
       }
    </script>

Questo semplicemente effettua una richiesta GET AJAX all'URL del carrello

/wp/?post_type=product&add-to-cart=[PRODUCT_ID]
28 mag 2012 18:54:28
Commenti

non funziona più (wc v2.1.12). ho trovato una soluzione e l'ho condivisa qui

honk31 honk31
28 ago 2014 12:15:58

Ho utilizzato questo tutorial che mi ha aiutato a ottenere ciò di cui avevo bisogno: https://wpharvest.com/add-product-to-cart-programmatically-in-woocommerce/

Dragos Micu Dragos Micu
22 mar 2020 15:03:25
2
37

In PHP sono riuscito a farlo in questo modo:

global $woocommerce;
$woocommerce->cart->add_to_cart($product_id);

Il metodo si trova in woocommerce/classes/class-wc-cart.php:

    /**
     * Aggiunge un prodotto al carrello.
     *
     * @param string $product_id contiene l'ID del prodotto da aggiungere al carrello
     * @param string $quantity contiene la quantità dell'articolo da aggiungere
     * @param int $variation_id
     * @param array $variation valori degli attributi della variazione
     * @param array $cart_item_data dati extra dell'articolo che vogliamo passare
     * @return bool
     */
    public function add_to_cart( $product_id, $quantity = 1, $variation_id = '', $variation = '', $cart_item_data = array() ) {
30 ago 2013 14:41:34
Commenti

Come potrei chiamare quel metodo via ajax?

Luca Reghellin Luca Reghellin
11 dic 2013 21:21:23

@Stratboy utilizzando il modo consigliato per aggiungere funzioni AJAX in Wordpress: https://codex.wordpress.org/AJAX_in_Plugins - fondamentalmente basta inserire le 3 righe della risposta nel primo esempio php del codex di wordpress.

CodeBrauer CodeBrauer
14 nov 2016 18:45:40