Di recente ho letto un post dove chiedevano se sia possibile applicare automaticamente un Coupon creato in WooCommerce direttamente nel carrello se il cliente avesse speso una certa cifra. Ebbene, ho deciso di fornirvi un aiuto per comprendere come sia meglio gestire questa situazione e tutti i passaggi da effettuare.
Creazione del Coupon
La prima cosa da fare è accertarsi che sul nostro Shop sia attivata l‘opzione per i Coupons. Se non avete attivato questa opzione, potete farlo dalle impostazioni di WooCommerce, alla prima TAB.
Ora andiamo a creare il primo Coupon, in questo esempio, diremo al coupon di applicare uno sconto del 20% a tutti i clienti che aggiungeranno al carrello uno o più articoli che sommati superino la spesa di 100 €.
La prima cosa è rinominare il nostro Coupon con un nome leggibile e comprensibile.
Ho chiamato il nostro Coupon di esempio “Sconto 20“, attenzione perché questo nome ci servirà in seguito. Ora andiamo alle restrizioni di utilizzo del Coupon e mettiamo il valore minimo di spesa per validare questo Coupon.
Bene! Ora abbiamo creato il primo coupon e possiamo cominciare ad inserire il nostro codice.
Il codice
Il codice in questione che vi presento, ve l’ho direttamente commentato voce per voce, per farvi capire i vari passaggi utili al fine di applicare in modo automatico lo sconto o Coupon direttamente al carrello di WooCommerce.
Non vi resta che copiare ed incollare questo codice nel vostro file functions.php del vostro tema in uso. Ricordatevi che il nome del Coupon deve rispecchiare esattamente quello scritto nella variabile php della funzione.
Risultato Finale
Come vedete ora il cliente aggiunge dei prodotti al carrello, ma l’importo è basso rispetto ai 100 € prefissati, quindi il Coupon non si attiva.
Ora che il cliente ha inserito più prodotti, l’importo cambia e supera i 100 € ed automaticamente il Coupon viene applicato!
Funzione anche con Notice
Ho pensato di ampliare questo mio codice con un notice
, che mostri nel carrello o nel checkout, un avviso all’utente, che mostri quanto sconto gli spetta in base alla cifra limite settata nel coupon di WooCommerce!
Questo il codice che potete copiare ed incollare!
Seguendo questa procedura, se ho importi inferiori all’importo stabilito per l’inserimento dello sconto (es. coupon 100 €, importo 20 €) mi blocca il carrello e mi dice che il coupon può essere attivato solo per importi superiori a quello del coupon… 🙁
Ciao Andrea, si è corretto! Se hai messo un Coupon che regala € 100 e nel carrello ci sono solo € 20 non credo che chi vende debba pure dare € 80 al cliente…
Inoltre dipende da come imposti la scontistica del coupon, quindi ti consiglio di fare attenzione e di riguardare bene il tuo ragionamento
e se ne volessimo far applicare 2 alternativi, con categorie di prodotto esclusive o un codice o un altro?
Ciao Andrea, devi solo cambiare la condizione dopo il mio commento nel codice: “Condizione per applicare il coupon in automatico”
Se vuoi farlo per categorie, ricordati che Woo usa dei custom terms.
Grazie per la dritta! Ti volevo però chiedere nel caso lo volessi applicare in base al peso totale dei prodotti? Sto cercando di creare due sconti uno per il peso tra i 10 e i 15 kg, uno per gli ordini che superano i 15kg, ma sono un pò bloccato… potresti aiutarmi?
Ciao Francesco, in questo caso lo sconto va applicato come sempre nel carrello, ma va cambiato il ragionamento fatto con questo tutorial.
Ti basta sommare il peso di ogni prodotto che hai nel carrello e questo per ogni quantità, poi dal risultato finale, in questo caso il peso totale, dovrai far applicare la regola al sistema. Basta un semplice condizionale in PHP per farlo, il lavoro grosso alla fine è intercettare al momento giusto i vari dati!
Ciao e complimenti per l’articolo. Ti volevo chiedere: e se invece in automatico volessi inviare un coupon DOPO la vendita come bonus per la prossima vendita? C’è un modo o mi sai indicare qualche risorsa? Grazie
Ciao Luk grazie a te! Ho preparato in tal proposito un articolo che puoi leggere qui
Ciao ottimo articolo … volevo chiederti se esiste una funzione che permette di visualizzare all’interno della pagina prodotto, in modo dinamico l’importo che serve per poter attivare i coupon … al momento io utilizzo un plugin yithem cart Messages ma è presente solo nella pagina carrello e Checkout … grazie mille
Ciao Martin dipende tutto dove lo vuoi far visualizzare. Sotto al titolo? sotto al prezzo?
Ciao, grazie per l’articolo. Volevo chiederti se esiste una funzione via php per sommare 3 coupon.In pratica nel mio ecommerce ci sono più sconti: se spendi da 50 a 100€ hai il 10%, se spendi da 100% a 200% il 15% e se spendi da 200% in su hai il 20% di sconto. Io li ho creati ma me ne prende solo 1.Come si potrebbe fare?Grazie mille
Ciao Simone si può fare agendo in questo caso con una regola php semplice che può riprendere in modo simile il mio codice. Ti allego la soluzione ma vorrei che capissi la logica da questo mio codice, che ovviamente si può semplificare e migliorare ma rende bene l’idea di come sia il ragionamento finale!
https://gist.github.com/miniMAC/0c6ab572abc2d82e57c3a9880762fcdd
Ciao, è possibile far sì che il coupon si applichi al totale del carrello (spedizioni comprese)? Grazie!
Ciao Claudia e grazie per il tuo commento! Si è possibile. Ovviamente deve avere una regola, oppure il coupon si applicherà per qualsiasi importo, sei tu a decidere la condizione!
Guarda bene il mio codice tra la riga 28 e la riga 30!
Ma quindi è un intervento da fare necessariamente passando dal codice, non c’è altro modo per farlo?Grazie mille per la rapida risposta!
Il Coupon si applica già al totale del carrello! Quando credi un Coupon trovi tutte le opzioni al suo interno per poterlo gestire.
Ciao e complimenti per la soluzione davvero molto ben fatta!Una domanda: vorrei inserire una condizione per cui quando applico un secondo codice il codice che sconta le spedizioni non venga applicato.E’ possibile?Grazie
Ottima funzione!! Ma come si fa a modificare il messaggio che da sopra sotto la soglia minima dello sconto? Per utilizzare questo codice promozionale, la spesa minima è 50,00€.dove si modificano i messaggi di “errore” ?
Ecco in pratica come si fa a modificare questo messaggio in rosso? ho cercato in functions ma non trovo…
Ciao Luca, quello è un WC notice e per poterlo modificare va fatto un filtro apposito alla chiamata XHR di default. Non è proprio semplice ed è una cosa molto personalizzata. Quel notice è quello di defaul del tema e di Woo!
Grazie mille! Ho capito non molto 😉 Pensavo bastasse sostituire il testo in una pagina dedicata .php
Domandona… e’ possibile eliminare il tasto ELIMINA a fianco dello stesso codice sconto?
CIao, ho eseguito tutta la procedura e lo sconto funziona, ma e’ successo a qualcuno che ogni tanto non funziona? Il cliente mi ha riferito che vari clienti si lamentano perche non viene scalato loro lo sconto appunto, ho provato anche io e in effetti succede da cosa puo’ dipendere?
allego immagine<a href=”https://ibb.co/zJghp5m”><img src=”https://i.ibb.co/cL9c0vy/Cattura.jpg” alt=”Cattura” border=”0″></a>
bioapinatura.com il sito in questione
Ciao Luca, il tuo caso è molto particolare in quanto potrebbero esserci degli errori sul tuo template o su qualche plugin o sull’hosting stesso. Il codice che ho rilasciato sopra funziona perfettamente se il sito non presenta errori.
Controlla di aver settato tutto correttamente e se hai bisogno di assistenza specifica a pagamento per il tuo caso, ti invito a contattarmi alla mia casella [email protected]
ciao e se dovessi applicare il coupon non per il minimo importo ma solo se scelgono come metodo di spedizione il ritiro in sede?
Ciao Romeo, nel tuo caso lo sconto non va fatto nel carrello, ma nel checkout e li parliamo di altre funzioni 😀
Ciao , ho trovato un piccolo bug, il mio cliente mi segnala che non a tutti applica lo sconto automatico, in effetti ho constatato che se uno va direttamente alla cassa senza visionare il carrello lo sconto nonviene conteggiato, vi risulta?
Ciao Luca! Grazie mille per averlo fatto presente! Ho aggiornato lo script ma ho anche aggiornato l’articolo con una nuova funzione in più!
Ciao Grazie per lo script mi è risultato molto utile! ho però notato che da mobile non mi applica lo sconto automatico! come è possibile?
grazie
Piero
Ciao Piero, in realtà non è possibile. Controlla di aver aggiornato la cache sul browser del tuo dispositivo. O semplicemente prova a visualizzare il sito con una nuova scheda in incognito
Ciao Ottimo articolo, ma avrei una domanda, se il codice è applicabile una sola volta per utente (buonosconto di benvenuto) con questo codice mi da errore, la seconda volta?
In teoria no!
Ciao ottimo script! Avrei una domanda:
se volessi applicare lo sconto automaticamente quando nel carrello ci sono minimo 2 prodotti specifici?
Ti spiego: il mio cliente vorrebbe offrire un prodotto in regalo (comunicato con un banner) quando nel carrello sono presenti due o più prodotti specifici (questi 4 prodotti per l’esattezza hanno valore di 12,90€ cad) quindi minimo ordine di 25,80€. Facciamo conto che questi 4 prodotti si chiamino A, B, C e D.
Se nel carrello ho il prodotto A + il prodotto E (che non fa parte di questi 4) che come totale fanno ad es. 26€ il coupon non si applica.
Se nel carrello ho il prodotto A + B (o C o D) + il prodotto E, il coupon viene applicato.
è possibile fare questo?
Grazie anticipatamente e spero sia tutto chiaro 🙂
Scusami ho tralasciato una cosa: il prodotto in regalo può essere anche uno sconto di 8,50€ sul carrello
Ciao Domenico!
Si devi usare il codice così come sopra, ma devi applicare al coupon stesso la restrizione di utilizzo solo ai prodotti A, B, C, D.
E’ una opzione che trovi di default in Woo!
Se vuoi regalare tipo € 8,50, allora ti basta inviare una mail al cliente che ha fatto richiesta del buono in questione, inviando un nuovo coupon appunto da € 8,50.
Ciao
ho inserito il tuo codice, perfetto.
Come posso togliere il tasto ELIMINA?
è possibile
E potrei anche personalizzare il testo che appare ? nel mio caso Coupon: scontocliente
Vorrei togliere la scritta Coupon
Grazie comunque
Ciao Vittorio, per eliminare il tasto elimina, potresti semplicemente fare un display: none; in CSS sull’elemento del tuo tema!
Per le altre scritte invece potresti provare con un plugn che vada a modificare le stringhe
Ciao, ottimo articolo.. una cortesia ho ripreso la tua funzione che hai messo su github e inserita sul functions.php del tema child è corretta come procedura? Perchè il sistema mi da errore; o dovrei capirne il meccanismo e ripeterlo nello script messo in questo sito? Perchè io avrei bisogno di due tipologie di sconto al raggiungimento di due soglie di spesa.
Grazie e ancora complimenti.
Ciao Marco, se puoi chiariscimi il tipo di errore con screenshots o altro, grazie!
Ciao e grazie per la puntuale rispota…
ti allego screenshots, mentre sotto ti metto il codice ripreso dalla funzione che ho messo nel functions.php, magari ho commesso qui qualche errore io. Ps. ho creato i due coupon a nome “sconto 10” e “sconto 15” con due range diversi.
———–
function woo_automatic_coupons() {
// Richiamo la globale
global $woocommerce;
// Nomi esatti dei coupons precedentemente creati
$couponName1 = ‘sconto 10’;
$couponName2 = ‘sconto 15’;
// Prendo i dati dai coupons
$couponData1 = new WC_Coupon($couponName1);
$couponData2 = new WC_Coupon($couponName2);
// Prendo l’importo minimo stabilito dai coupons
$couponMinAmount1 = $couponData1->get_minimum_amount();
$couponMinAmount2 = $couponData2->get_minimum_amount();
// Prendo l’importo massimo stabilito dai coupons
$couponMaxAmount1 = $couponData1->get_maximum_amount();
$couponMaxAmount2 = $couponData2->get_maximum_amount();
// Prendo il prezzo totale attuale dal carello (escluso il costo di spedizione)
$cartTotalAmount = $woocommerce->cart->get_cart_total();
/**
* Condizioni per applicare il coupon in automatico
* se il totale del carrello è compreso nel range
* tra il valore minimo e massimo del coupon
*/
if ( $cartTotalAmount >= $couponMinAmount1 && $cartTotalAmount cart->add_discount( $couponName1 ); // Sconto 10%
} elseif ( $cartTotalAmount >= $couponMinAmount2 && $cartTotalAmount cart->add_discount( $couponName2 ); // Sconto 15%
}
}
add_action( ‘woocommerce_before_cart’, ‘woo_automatic_coupons’ );
———
screenshots => https://ibb.co/VJtMLH4
Ciao Marco, il codice che hai scritto non può funzionare e cè molta duplicazione, se vuoi applicare lo sconto con più coupons bisogna rivedere tutto il codice e magari utilizzare un array con una funzione php in_array che vada ad intercettare + coupons!
Per fare quello che vuoi tu va fatta una richiesta a preventivo.
ciao ho visto il tuo messaggio e interessava anche a me inserire coupon dinamici in questo codice, hai poi risolto?
Grazie parlo con il cliente e vediamo che dice.
Grazie ancora per il supporto.
M
Ciao, articolo TOP!
Vorrei offrire la spedizione gratuita per ordini superiori ai 100 euro e fare in modo che nel carrello compaia la riga barrata (o con simbolo “-“) nel carrello per un importo pari ai costi di spedizione! esempio:
Subtotale: 120 euro
Spedizione: 30,99 euro
Sconto spedizione: – 30,99 euro
Totale carrello = 120 euro
quindi, in sintesi, è possibile fare in modo che (con il tuo codice sopra) la cifra non sia fissa ma corrisponda al valore del costo di spedizione (diverse classi in base al prodotto e zona di spedizione).
Grazie
Ciao Andrea certo. Basta spuntare l’opzione spedizione gratuita nel coupon
Ciao scusate, leggendo l’articolo credevo facesse al mio caso (con le dovute modifiche) ma non credo:
Io dovrei fare in modo che il mio coupon “Sconto10” che è uno sconto in percentuale (10%) sul carrello, dopo una soglia max di 500 euro (quindi valore massimo di 50 euro) non si disattivi (come dalle impostazioni del coupon) ma rimanga fisso a 50 euro anche per importi maggiori.
Come posso risolvere questa necessità?
grazie in anticipo
Ciao Andrea, nel tuo caso dovresti settare 2 coupon, 1 che va nella fascia da 0 a 500 € con sconto 10%. Poi crei un altro coupon che va da una spesa minima di 500 € in poi e li applichi uno sconto non in percentuale, ma solo numerico di € 50. La regola del coupon però andrebber rivista in php con la condione corretta per applicare 1 coupon oppure l’altro. Se hai bisogno di questa mod nel caso puoi contattarmi!
ciao, innanzitutto grazie sempre per l’utilità dei tuoi post, in riferimento a questo codice vorrei inserire due/tre coupon dinamici. Nel senso che al minimo raggiungibile di una spesa esclude il precedente e si attiva quello successivo, possibile attivare dal codice postato con un aggiunta?
già lo esclude perché stai usando un coupon differente
E come posso impostare diversi codici coupon nello stesso codice PHP che hai postato?
possibile inserire più di un coupon con il codice postato?
sbaglio o c’è anche smart coupon che fa la stessa cosa? ovviamente sarà più pesante per il sito?
il mio codice appare per la registrazione alla newsletter. L’unica cosa che vorrei che riapparisse anche dopo… così da potermi registrare di nuovo…. è possibile?
grazie
Vorrei poter offrire la spedizione gratuita su alcuni prodotti o categorie di prodotti ma utilizzando il codice e spuntando spedizione gratuita se viene inserito a carrello il prodotto col coupon spedizione gratuita e un altro prodotto che non ha spedizione gratuita mi mette tutto il carrello con spedizione gratis…
Come posso fare?
non ho capito bene Lorenzo, hai un problema o ti serve questa soluzione?