Aggiungere un Prodotto Variabile al Carrello WooCommerce tramite link personalizzato
Sto cercando di aggiungere un prodotto variabile al mio carrello direttamente attraverso un link. Sto impostando il variation_id con la query string. Per quanto posso vedere, sto inviando i dati esattamente nello stesso modo in cui lo fa il modulo predefinito dei prodotti variabili.
Ecco il codice all'interno della mia pagina single-product:
<a href="<?php echo esc_url( $product->add_to_cart_url() ); ?>&variation_id=262" class="rounded-rect-button add-to-cart">Aggiungi al Carrello</a>
Al contrario, il prodotto semplice funziona correttamente. Ho impostato i prezzi per le mie variazioni di prodotto nell'amministrazione. Non capisco perché non sia così semplice come inviare i dati attraverso il link. Qualsiasi aiuto sarebbe molto apprezzato.

Attualmente sto lavorando su un negozio WooCommerce versione 2.1.12 e sembra che abbiano modificato questo comportamento.
L'URL AJAX per aggiungere articoli al carrello deve essere strutturato in questo modo:
?add-to-cart=[ID-PRODOTTO]&variation_id=[ID-VARIAZIONE]&attribute_[NOME-ATTRIBUTO]=[SLUG-ATTRIBUTO]&attribute_[NOME-ATTRIBUTO]=[SLUG-ATTRIBUTO]
Esempio:
http://example.com/store/category/product/?add-to-cart=239&variation_id=240&attribute_pa_size=48-2&attribute_pa_color=gold
Questo aggiunge un prodotto specifico al carrello e imposta anche gli attributi della variazione nel carrello.
Puoi anche impostare la quantità semplicemente aggiungendo &quantity=[VALORE]
Alla fine risulta molto utile poiché tutti questi valori sono impostati all'interno del modulo di invio / campi di selezione, devi solo cercarli..

Ho risolto il problema. Mi mancavano un paio di parametri necessari per aggiungere un prodotto variabile al carrello. I parametri mancanti sono variation_id
e il tipo di attributo a cui si riferisce il variation_id
. L'ID della variazione si trova nell'area di amministrazione > WooCommerce > Prodotti e sotto la scheda "Variazioni" accanto alla variazione del prodotto che hai creato.
Il parametro dell'attributo è formato dal prefisso attribute_
seguito dal nome dell'attributo sanificato. Ad esempio, il mio attributo si chiama "Stock Colors", quindi il mio parametro del tipo di attributo è attribute_stock-colors. Da quello che ho capito, basta impostare attribute_stock-colors=1
perché il metodo di aggiunta al carrello verifica semplicemente che esista.
Ecco un semplice esempio di un link che aggiunge al mio carrello un prodotto con ID variazione 261 di "stock colors":
<a href="<?php echo esc_url( $product->add_to_cart_url() ); ?>&variation_id=261&attribute_stock-colors=1">Aggiungi al Carrello</a>
Per usarlo in una situazione reale, dovresti impostare dinamicamente il tipo di attributo e l'ID della variazione in base alle opzioni selezionate dall'utente in un menu a discesa o qualcosa di simile (a meno che ogni prodotto non abbia la stessa variazione, il che lo renderebbe sostanzialmente un prodotto semplice).
