Come applicare un Coupon automaticamente in WooCommerce con una spesa minima

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!

57 commenti su Come applicare un Coupon automaticamente in WooCommerce con una spesa minima

  1. 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… 🙁

    1. 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

  2. e se ne volessimo far applicare 2 alternativi, con  categorie di prodotto esclusive o un codice o un altro?

    1. 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.

  3. 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?

    1. 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! 

  4. 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

  5. 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 

  6. 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

    1. 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!

    2. Ma quindi è un intervento da fare necessariamente passando dal codice, non c’è altro modo per farlo?Grazie mille per la rapida risposta!

    3. Il Coupon si applica già al totale del carrello! Quando credi un Coupon trovi tutte le opzioni al suo interno per poterlo gestire.

  7. 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

  8. 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” ?

    1. 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!

  9. 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?

    1. allego immagine<a href=”https://ibb.co/zJghp5m”><img src=”https://i.ibb.co/cL9c0vy/Cattura.jpg” alt=”Cattura” border=”0″></a>

    2. 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]

  10. ciao e se dovessi applicare il coupon non per il minimo importo ma solo se scelgono come metodo di spedizione il ritiro in sede?

    1. Ciao Romeo, nel tuo caso lo sconto non va fatto nel carrello, ma nel checkout e li parliamo di altre funzioni 😀

  11. 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?

    1. Ciao Luca! Grazie mille per averlo fatto presente! Ho aggiornato lo script ma ho anche aggiornato l’articolo con una nuova funzione in più!

  12. 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

    1. 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

  13. 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?

  14. 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 🙂

    1. Scusami ho tralasciato una cosa: il prodotto in regalo può essere anche uno sconto di 8,50€ sul carrello

    2. 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.

  15. 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

    1. 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

  16. 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.

    1. Ciao Marco, se puoi chiariscimi il tipo di errore con screenshots o altro, grazie!

  17. 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

    1. 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.

    2. ciao ho visto il tuo messaggio e interessava anche a me inserire coupon dinamici in questo codice, hai poi risolto?

  18. 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

  19. 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

    1. 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!

  20. 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?

  21. 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

  22. 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?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *