Woocommerce - Aggiungi un prodotto al carrello a livello di codice tramite JS o PHP [chiuso]


32

Sto usando il plugin Woocommerce per facilitare una piccola parte di e-commerce di un sito e ho bisogno di aggiungere prodotti al suo carrello tramite qualche chiamata o funzione piuttosto che usare i propri pulsanti 'aggiungi al carrello'.

Con questo intendo sostanzialmente inviare a Woocommerce uno SKU e una quantità, ad esempio, e avere l'aggiornamento del carrello.

sendToCart('123456', 55);

eccetera

Ho esaminato la documentazione e non riesco a trovare un riferimento a questo genere di cose. Qualcuno può suggerire come potrei raggiungere questo obiettivo?


Primo votato come troppo localizzato . Hai provato il supporto di WooThemes?
Chip Bennett,

3
@Chip Bennett Ho sì, fanno pagare $ 125 dollari solo per unirmi purtroppo. Questo rientra tra parentesi di Wordpress e Woocommerce: esso stesso è un tag valido qui, quindi sicuramente è valido? A meno che non fraintenda "troppo localizzato"?
Larry B,

Questa domanda non ha nulla a che fare con WordPress in particolare. Comprende solo il plugin WooCommerce stesso - Funzionalità plug-in e funzioni / codice plug-in personalizzati. Avrei potuto votare da vicino come fuori tema , ma di solito uso troppo localizzato per domande su prodotti commerciali o prodotti che hanno opzioni di supporto commerciale.
Chip Bennett,

12
@ChipBennett Woocommerce è solo per Wordpress, quindi sembra strano catagorizzare come nulla a che fare con WordPress. Come si usa il tag Woocommerce se non per pubblicare una domanda su Woocommerce? In ogni caso ho trovato la risposta che posterò ora nel caso in cui qualcun altro abbia lo stesso problema.
Larry B,

11
@GHarping Grazie per aver posto questa domanda, anche se hai un sacco di merda per questo. :)
Ryan

Risposte:


35

OK, ecco come l'ho risolto alla fine. Un esempio veloce e sporco, utilizza 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>

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

/wp/?post_type=product&add-to-cart=[PRODUCT_ID]

7
questo non funziona più (wc v2.1.12). ha trovato una soluzione e l'ha condivisa qui
honk31,

30

In PHP sono riuscito a farlo in questo modo:

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

Il metodo è in 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
Come potrei chiamare quel metodo tramite Ajax?
Luca Reghellin,

1
@Stratboy usando il modo raccomandato di aggiungere funzioni AJAX in Wordpress: codex.wordpress.org/AJAX_in_Plugins - in pratica basta inserire le 3 righe dalla risposta nel primo esempio php dal codice wordpress.
CodeBrauer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.