WooCommerce: nascondere altre spedizioni quando è disponibile la spedizione gratuita

WooCommerce spedizione gratuita

Quando si offre la spedizione gratuita in WooCommerce, magari quando il carrello supera una certa soglia di spesa, la pagina di checkout continua a mostrare anche le altre possibilità di spedizione a pagamento, e questo può confondere i clienti.

Grazie ad un semplice snippet, da inserire nel file functions.php, è possibile nascondere le altre spedizioni quando la spedizione gratuita è attiva.

Nelle due immagini qui sotto, il carrello di WooCommerce, con e senza snippet:

Questo lo snippet da inserire nel file functions.php del tema, meglio se tema child.

Roberto Rota esperto WordPress e WooCommerce

Hai bisogno di aiuto con WooCommerce?

Se hai bisogno di assistenza per il tuo store WooCommerce, o anche solo per mettere in pratica queste istruzioni, contattami!

Se non si dispone di un tema child, è possibile utilizzare lo snippet grazie al plugin Code Snippets o similari.

/**
 *
 * Nascondi altre spedizioni quando è disponibile la spedizione gratuita
 *
 */
function nascondi_spedizioni_diverse_da_gratuita( $rates ) {
    $free = array();
    foreach ( $rates as $rate_id => $rate ) {
        if ( 'free_shipping' === $rate->method_id ) {
            $free[ $rate_id ] = $rate;
            break;
        }
    }
    return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'nascondi_spedizioni_diverse_da_gratuita', 100 );

Snippet testato con WooCommerce 3.4.5

Aggiornamento dell’articolo originale del 6-6-2016

Tags: , , , , ,

72 Risposte a “WooCommerce: nascondere altre spedizioni quando è disponibile la spedizione gratuita”

  1. dario 16 Lug 2019 at 18:07 #

    Ciao roberto premetto che woocommerce a me non piace per niente, ma l’ho dovuto installare per forza, sulle spedizioni non ci si cava una rapa, le ho provate tutte compare sotto calcola la spedizione poi qualunque città inserisco il prezzo non varia, quindi inutile, ho letto diverse guide ma mom riesco ad impostare il costod i spedizione non so come si faccia non c’è una guida un tutoriam fatto bene che lo spieghi, non ci si capisce nulla, neanche compare il prezzo della spedizione come fai vedere tu, sulla scheda venditore compare solo le classi, ma è inutile, nonso come devo fare grazie

    • Roberto Rota 16 Lug 2019 at 18:27 #

      Le spedizioni in woocommerce sono abbastanza “basiche”, le classi permettono di estenderle raggruppando i prodotti in determinate categorie (per peso, per dimensioni etc). Per differenziare agevolmente le spedizioni per città, all’interno della stessa fascia di spedizioni, dovresti guardare estensioni come Table Rate Shipping (https://woocommerce.com/products/table-rate-shipping/).

  2. Fabio 26 Giu 2019 at 11:05 #

    Ciao ti ringrazio per lo snippet, mi è davvero molto utile! Però mi trovo in questa situazione: io offro anche il “ritiro in sede” come opzione e nel caso l’importo del carrello superi la soglia che ho imposto per la spedizione gratuita questa voce con l’aggiunta dello snippet sparisce…

    Come potrei risolvere?

    Grazie ancora!

    Fabio

    • Roberto Rota 27 Giu 2019 at 09:55 #

      Ciao Fabio scusa il ritardo

      purtroppo sono lontano dal mio computer e faccio fatica a darti una risposta precisa, ma ricordo che è possibile modificare lo snippet per escludere determinati gateway.

      rob

  3. ilaria 26 Apr 2019 at 12:51 #

    Grazie mille Roberto, mi hai risolto il problema!!

  4. Danilo 4 Ott 2018 at 16:09 #

    Ciao!
    Vorrei impostare tramite il codice, la possibilità di rimuovere le altre spedizioni così come è descritto dell’articolo, ma lasciare il Ritiro in sede e Spedizione gratuita!
    Come posso fare?
    Grazie!

  5. Riccardo 4 Ott 2018 at 11:44 #

    Sarebbe anche utile levare il link “calcolo spedizione”

  6. Gianni 9 Feb 2018 at 13:59 #

    Complimenti, la soluzione proposta funziona anche con la 3.x

  7. enricomaggio 13 Nov 2017 at 16:40 #

    Buongiorno Roberto,

    grazie! Ho risolto un bel po’ di grattacapi trovando il tuo sito, compreso anche quello di questo articolo. Mi rimane solo una cosa da sistemare ma non so da dove cominciare: nel mio shop sono presenti sia prodotti variabili che singoli. Non capisco perché nelle pagine di archivio sotto agli articoli singoli ci sia il tasto “acquista” che rimanda subito al carrello; vorrei far andare gli utenti prima nella pagina singola del prodotto (dove ci sono prodotti in cross-selling) per poi farli andare nel carrello.
    Magari è una semplice spunta nelle impostazioni ma non riesco a trovarla…
    Grazie mille

  8. Roberto 18 Lug 2017 at 12:17 #

    Ciao Roberto,
    ho utilizzato il tuo metodo con l’ultima versione di WooCommerce e funziona perfettamente… Ma se voglio lasciare anche la possibilità di scegliere il “Ritiro in sede” come faccio? io ho incollato il primo snippet per la mia versione di WooCommerce.
    Grazie

    • Roberto Rota 18 Lug 2017 at 22:41 #

      Ciao Roberto,
      se guardi bene le istruzioni commentate nello snippet ci sono due strade, una per tutti i pagamenti e una per fare un’esclusione mirata.

      Roberto

      • Roberto Giaconia 18 Lug 2017 at 22:56 #

        Perdonami ma non capisco proprio dove guardare… Il codice con queste possibilità sembra esseer quello per le versioni precedenti la 2.6… Inoltre non saprei cosa togliere 😮

  9. woody 4 Mag 2017 at 18:45 #

    Ciao Roberto,
    come posso disattivare la spedizione gratuita, nel caso in cui venga usato un coupon?

    • Roberto Rota 4 Mag 2017 at 22:38 #

      bella domanda mi prendi in contropiede, non me l’hanno mai fatta 😉

      se scopro qualcosa ti aggiorno..

      rob

  10. gianlol 26 Feb 2017 at 14:22 #

    grazie per la risposta, ho risolto creando una nuova zona con 3 metodi di spedizione,:

    Ritiro in sede
    Ordine superiore a 100 €: Spedizione gratuita
    Tariffa Unica + Sovrapprezzo Isole

    funziona tutto correttamente, grazie ancora.
    Se posso farti un’altra domanda;

    Devo applicare un costo facoltativo di 5 euro per assicurare la merce!
    Sai se esiste un plugin o eventualmente una modifica al codice.

    grazie e buona giornata.

    gio.

  11. gianlol 25 Feb 2017 at 20:37 #

    Buonasera Roberto,

    post molto utile e preciso, ho risolto senza problemi, grazie.
    se posso adesso vorrei chiederti come fare se devo es:

    Per le spedizioni in Isole Minori commissionato un sovra prezzo, a carico del cliente, di 5 euro, ovviamente oltre alla spesa standard che è 10euro.
    Come posso fare?

    grazie per l’eventuale risposta.

    Saluti.

    • Roberto Rota 26 Feb 2017 at 10:41 #

      La soluzione più semplice potrebbe essere usare il plugin table rate shipping

      rob

  12. silvestro 30 Ott 2016 at 18:56 #

    Ciao Roberto, ogni volta che cerco una soluzione a un problema wordpress e affini con Google trovo sempre doversi risultati ma i tuoi sono sempre chiari e risolutivi, da ultimo questo snippet.
    Complimenti e grazie per ciò che fai
    Silvestro

  13. Alessia 5 Ott 2016 at 12:40 #

    Tutti perfetto, ma quando non si utilizza il corriere perché si sceglie il RITIRO IN SEDE, come si può nascondere la modalità di pagamento in contrassegno (che mi crea un supplemento di 5€ al totale del carrello)?

    • Roberto Rota 5 Ott 2016 at 14:56 #

      Se hai configurato correttamente le spedizioni ed i pagamenti, non dovrebbe succedere. Il contrassegno deve essere legato ad uno o più metodi di spedizione, ma non al ritiro locale.

      rob

      • Alessia 5 Ott 2016 at 15:02 #

        Hai perfettamente ragione, proprio ora ho visto che nel pannello del contrassegno esiste una tendina che permette di associarlo ad una o più modalità di spedizione. E’ bastato selezionarle tutte, escludendo il Ritiro in sede, per far sparire il contrassegno quando si sceglie quest’ultima opzione.
        E’ un elemento dell’ultimo aggiornato di WP che non avevo considerato.
        Grazie Rob!

  14. Matteo 29 Set 2016 at 09:40 #

    Ciao Roberto e grazie per la tua guida! Avendo aggiornato, mi accodo alla richiesta di Micol (in questo caso però per il contrassegno, il quale viene disabilitato; mentre sotto la soglia della spedizione gratuita, è regolarmente presente). In particolare, qual’è la stringa da implementare?

    Grazie

  15. Micol 3 Giu 2016 at 15:00 #

    Ciao, grazie del suggerimento, però avrei necessità di lasciare il metodo Ritiro in sede anche con spedizione gratuita. E’ possibile? A me ritiro il sede lo lascia solo se l’importo è al di sotto della spedizione gratuita. Come posso fare?

    • Roberto Rota 3 Giu 2016 at 15:09 #

      Se guardi la seconda parte dello snippet, puoi isolare le spedizioni. Ora non mi ricordo il nome del ritiro in sede, ma non dovrebbe essere difficile rimediarlo.

      rob

  16. Patrizia Criscuolo 20 Mag 2016 at 10:20 #

    salve, ho inserito il codice…mi segna solo una spedizione e non funziona quella nazionale che avevo impostato

    • Roberto Rota 20 Mag 2016 at 10:55 #

      Ciao Patrizia, difficile risponderti senza vedere la struttura e soprattutto le impostazioni delle spedizioni.

      rob

      • Patrizia Criscuolo 21 Mag 2016 at 09:50 #

        ciao, Ho impostato la spedizione nazionale a €5,50 , il secondo oggetto a 0 e la spedizione gratis per un ordine di €40
        Mi compaiono entrambe ed entrambe selezionabili per qualsiasi cifra spendo

  17. Enrico 11 Dic 2015 at 10:00 #

    Ciao Roberto, questo articolo mi è stato davvero utile, mi unisco alla richiesta che ti è stata fatta il 13 maggio riguardo a far si che il ritiro in sede appaia sempre. è un discorso molto complicato?

    • Roberto Rota 11 Dic 2015 at 10:15 #

      Ciao Enrico, non dovrebbe essere troppo complicato, dovrei solo trovare il tempo (tiranno) per fare qualche prova.

      rob

  18. vale 14 Ott 2015 at 16:57 #

    Ok, intanto grazie mille per avermi inviata a questo articolo.
    Però…mettiamola così, io non lo so fare 🙂 Ergo, ti spiego meglio quello di cui avrei bisogno… Una volta superato l’ordine di 99,00€ la spesa di spedizione diventa gratuita ma una volta nel carrello mi compare la “spedizione gratuita” ma le altre rimangono comunque visibili e proprio per la questione di correttezza di cui parlate sopra, non vorremmo che i nostri utenti si sbagliassero.
    Come possiamo fare in alternativa senza cercare di capire come e dove si copia sto codice? 🙂
    Grazie ancora,
    Vale

    • Roberto Rota 14 Ott 2015 at 17:16 #

      Ciao Vale,

      non è difficile: copi lo script nel file delle funzioni del tema (functions.php), e se hai predisposto correttamente la spedizione gratuita quando qualcuno supera il suo tetto le altre spedizioni non dovrebbero più apparire, sia nel carrello che nel checkout.

      Mi raccomando fai un bel backup prima che non si sa mai 😉

      rob

      • vale 14 Ott 2015 at 17:30 #

        ho trovato in editor il functions.php ma devo copiare e incollare tutte le righe in quale punto del functions.php? all’inizio? alla fine? a una certa?
        :-/

        • Roberto Rota 14 Ott 2015 at 17:55 #

          Per sicurezza copiale ala fine, così le ritrovi subito se devi toglierle.

          Per sicurezza, fai un backup…

          rob

          • vale 14 Ott 2015 at 18:08 #

            Ce l’ ho fattaaaaaaaaaaaaaaaaaaaaaaaaaa!!!!!!!
            Grazie mille!!!!!!!!!!

  19. Andrea 23 Set 2015 at 17:33 #

    Ciao Roberto,
    ottimo articolo, come gli altri del resto…

    Ho già avuto modo di inserire delle personalizzazioni nel file functions.php per modificare le funzionalità di woocommerce, ma non capisco per quale motivo questa funzione non viene calcolata, praticamente non funziona.

    Può esserci un motivo in particolare? Il tema? La versione di WP? Alcuni settaggi di Woocommerce che vanno in conflitto?
    Insomma non so più dove sbattere la testa.

    Ho provato a disabilitare tutti i vari plugin (WooCommerce escluso), ad eliminare le altre aggiunte al file funciotns.php, non saprei che altro fare.

    Mi puoi dare un aiuto?

    • Roberto Rota 23 Set 2015 at 17:59 #

      Ciao Andrea, io ho la stessa funzione applicata in più d’uno dei woocommerce che seguo, tutti aggiornati e con diversi temi/configurazioni, ma mi sembra che stia funzionando ancora bene.

      per capirci di più bisognerebbe dare un’occhiata sotto il cofano

      rob

      • Andrea 24 Set 2015 at 08:13 #

        Giusto per intenderci,
        questa funzione dovrebbe nascondere la spedizione con l’ ID ” local_delivery ” oppure “flat_rate” ?

        Io ho attive queste 3 tipologie di spedizioni:

        Ritiro in sede = local_pickup
        Spedizione gratuita = free_shipping
        Spedizione nazionale = local_delivery

        Può essere questo il problema?

        Ciao

        A.

        • Roberto Rota 24 Set 2015 at 21:41 #

          Ciao Andrea, così com’è lo snippet nasconde tutte le opzioni a pagamento.
          Se segui le istruzioni puoi fare in modo che ne nasconda una sola, nello snippet c’è l’esempio della flat_rate

          rob

          • Matteo 5 Nov 2015 at 22:34 #

            Ciao Roberto,

            Anche io sarei intenzionato a nascondere SOLO la “spedizione standard”, e a lasciare quella gratuita e quella Nazionale (local_delivery). Ho provato a cambiare il codice come da istruzioni ma forse sbaglio qualcosa. Riusciresti ad incollarmi il codice esatto? 🙂

            • Roberto Rota 5 Nov 2015 at 22:48 #

              Ciao Matteo, appena riesco a ritagliarmi un po’ di tempo faccio qualche prova per scrupolo e te lo posto.

              Non garantisco quando, sono imballato in questo periodo…

              Roberto

  20. Fulvio 31 Ago 2015 at 18:23 #

    articolo ben fatto ma mi domando perchè nascondere le spedizioni quando hai quella gratuita? nella mia esperienza mi è capitato più di una volta che le persone pagassero la spedizione, errore o no, perchè impedirglielo ? 😉

    • Roberto Rota 31 Ago 2015 at 19:50 #

      Caro Fulvio, è una questione di correttezza verso il cliente, per impedirgli di fare degli errori che, volendo, alla lunga possono avere ripercussioni sul buon nome e la reputazione dello store.

      Una voce negativa può creare danni anche seri…

      rob

      • Ciao Roberto, in verità tu dai un opzione sta a te sceglierla o meno, è un po’ come su Amazon la scelta o meno di pagamento con Prime o pagando la spedizione, se sei abbonato prime e la spedizione prevede la spedizione gratuita, tu comunque hai l’opzione di pagarti la spedizione, sta a te scegliere di non pagarla …

        Poi chiamiamola correttezza chiamiamola: lasciar libero arbitrio. E’ un modello che seguono in tanti grandi ecommerce

        • Roberto Rota 6 Set 2015 at 15:31 #

          Ciao Fulvio, sono d’accordo se la spedizione a pagamento offre dei vantaggi rispetto quella gratuita, tempi minori di consegna, o che altro.

          Ma se è sempre la stessa spedizione, con ad esempio il classico bonus “spedizione gratuita per acquisti superiori a tot”, credo sia corretto che la spedizione a pagamento debba sparire al momento opportuno.

          Se poi evidenzi graficamente bene questo aspetto, sono sicuro che ne ottieni buone impressioni dai clienti.

          rob

  21. morganaeffect 21 Ago 2015 at 12:31 #

    Ciao Roberto, seguo sempre con interesse i tuoi articoli e le tue newsletter, però non ho ancora trovato un thread che risponda ad una mia problematica riguardo alle spese di spedizione gratuite.

    Avrei bisogno di rendere gratuita la spedizione ad una determinata categoria (e relative sottocategorie), solo al raggiungimento di un minimo di acquisto.

    Ho sperato che nella nuova release di woocommerce, nella tab spedizione gratuita, fosse implementata anche la scelta in base alla categoria o al brand, ma niente :-); d’altronde per la sua gratuità, woocommerce offre già moltissimo…

    In rete on riesco a trovare un plugin adatto, forse perchè non inserisco le parole di ricerca giuste :-(.

    Tu hai mai avuto modo di impostare questo tipo di calcolo delle spedizioni?

    Grazie!

    morganaeffect

    • Roberto Rota 22 Ago 2015 at 12:02 #

      Ciao Morgana, fino ad ora non mi è mai capitato di dover distinguere la spedizione gratuita in base alle categorie.

      Fattibile con un filtro, probabilmente, ma la domanda sorge spontanea: se in un ordine appaiono prodotti di più categorie, alcune con spedizione gratuita e altre no, che succede?

      rob

      • morganaeffect 22 Ago 2015 at 13:02 #

        Chi compie un ordine misto purtroppo paga le spese di spedizone. E’ una domanda che mi sono posta in effetti, ma non saprei come fare diversamente. I prodotti di un brand prevedono la spedizione gratuita oltre un certo limite, mentre gli altri prodotti del catalogo no.

        Amazon offre spesso spedizioni gratuite, ma solo quando spedisce personalmente, mentre per i prodotti inviati direttamente dai suoi affiliati si pagano le spese di consegna; mi è capitato infatti di dover pagare le spese di spedizione nonostante 1 prodotto avesse la spedizione gratuita.

        Ho pensato ad un codice coupon, ma la cosa diventa un pò intricata. In che modo posso usare i filtri?

        Grazie per la risposta superveloce 🙂

  22. emiliano 22 Giu 2015 at 22:12 #

    Ciao Roberto,
    avrei bisogno di un aiuto.
    Nell’ecommerce che sto realizzando con woocommerce avrei la necessita di impostare una spedizione a 7 euro solo per certe categorie di prodotto.

    Tutte le spedizione sono gratuite ma solo per una categorie vorrei impostare una spedizione fissa 7 euro. io ho creato una classe di spedizione con costo 7 euro e l’ho aggiunta nel prodotto corrispondente.

    il problema e che mi aggiunge correttamente la spedizione a 7 euro, ma c’è anche la possibilita di scegliere la spedizione gratuita. Io vorrei che scomparisse in questi casi quella gratuita…

    mi sono spiegato bene ? grazie

    • Roberto Rota 24 Giu 2015 at 08:57 #

      Ciao Emiliano,
      non ho avuto modo di verificarli ancora, ma se fai una ricerca in rete puoi trovare diversi esempi di snippet che nascondono questo o quel metodo di spedizione in base a diversi fattori, dall’ID del prodotto alla categoria. Potrebbe essere la soluzione più semplice.

      Se riesco, visto che potrebbe tornarmi utile in futuro, appena ho un attimo magari cerco di fare una selezione e provarli, ma non ti prometto nulla che sono pieno di cose da fare in questi giorni…

      rob

      • emiliano 24 Giu 2015 at 09:04 #

        Grazie roberto.

        Diciamo che ho risolto in questo modo: Pero vorrei sapere solo se è un metodo che ha senso.

        Ho creato una classe di spedizione a 7 euro e una classe di spedizione a 0 euro.
        per tutte le categorie ho assegnato quella a 0 euro (che mi scrive di default gratis perche vede lo zero) e per l’altra categoria ho assegnato quella da 7 euro (cosi mi mantiene solo quella da 7). In questo modo funziona. Magari mi sono complicato troppo la vita 🙂

        Emiliano

        • Roberto Rota 24 Giu 2015 at 09:07 #

          Soluzione assolutamente onorevole, le classi di spedizione non vengono mai apprezzate abbastanza…
          Io per istinto vado subito a cercare altre strade, ma dovrei costringermi a valutarle più spesso 😉

          rob

          • emiliano 24 Giu 2015 at 09:12 #

            in effetti la soluzione piu facile è sempre sotto al naso 🙂
            Ti ringrazio ancora….

            Emiliano

  23. BB 13 Mag 2015 at 13:23 #

    Salve e grazie per il suo utilissimo codice. E’ possibile lasciare sempre ‘il ritiro in sede’ ? Grazie

    • Roberto Rota 13 Mag 2015 at 19:26 #

      Bella domanda, in effetti l’eventuale opzione “ritiro in sede” sparisce con questo snippet, magari con qualche modifica si riesce ad escluderla dall’effetto ma ci dovrei lavorare un po’.

      Se dovessi metterci le mani ti aggiorno.

      rob

  24. Rosario 7 Mag 2015 at 19:24 #

    Ciao Roberto come posso fare ad impostare su woocommerce non tutti ma alcuni prodotti in spedizione gratis e far apparire un fumetto “spedizione gratuita”?

  25. Alessandro Marengo 29 Mar 2015 at 12:36 #

    E’ stato testato anche da woo 2.3.6 in poi? A me non funziona e non ha mai funzionato prima. Che cosa può impedire la corretta applicazione di questo snippet? Non ho nessun altro plugin che intervenga sul costo delle spedizioni.

    • Roberto Rota 29 Mar 2015 at 16:02 #

      Ciao Alessandro, ti confermo che funziona regolarmente anche sull’ultima versione di WC, lo sto usando in un paio di installazioni con diversi temi, the retailer e flatsome, senza problemi.

      rob

      • alemarengo 30 Mar 2015 at 12:51 #

        Forse ci sono riuscito anche io, usavo una doppia dichiarazione nel functions.php 😉

  26. emiliano 7 Mar 2015 at 10:51 #

    Ciao Roberto,
    grazie delle utilissime info. Ti volevo chiedere però un consiglio.

    Avrei bisogno di utilizzare Woocommerce e integrare per le spedizioni il corriere GLS; nel senso che vorrei che quando per esempio un utente efettua un acquisto, automaticamente la spedizione venga processata da Gls. Esiste un plugin anche a pagamento che questo ? o che comunque è relativo a Gls?

    Grazie

    • Roberto Rota 7 Mar 2015 at 18:11 #

      Ciao Emiliano, personalmente non ho molta esperienza in questo settore.

      Da una veloce ricerca su google ho visto che ci sono parecchi plugin che in teoria interagiscono con GLS, tutto sta trovarne uno che sia aggiornato e che interagisca anche con le spedizioni di GLS in italia, che se non erro sono gestite dalle Poste.

      rob

Trackbacks/Pingbacks

  1. √ Perché non funziona più lo script che nasconde le spedizioni di WooCommerce? - 20 Set 2016

    […] installato lo script per nascondere le spedizioni a pagamento, quando è presente una spedizione gratuita, ma da quando ho aggiornato WooCommerce non mi funziona […]

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Ciao, come posso aiutarti?
Powered by