Woocommerce – Lezione n°1: nascondere la spedizione gratuita mantenendo il ritiro in sede

woocommerce

Woocommerce è un ottimo programma per creare fantastici e-commerce con WordPress. É molto completo nei settaggi principali, ma ha qualche piccolo bug che deve essere corretto per migliorare la UX (user experience) degli utenti/clienti. Come nella spedizione gratuita.

Uno di questi, con cui spesso si ha a che fare, riguarda le tariffe di spedizione.

Woocommerce, tra le sue tante funzioni, permette la possibilità di scegliere tra vari sistemi di spedizione e consente di decidere se e quando rendere gratuita la spedizione. Questo sistema si usa molto, generalmente al raggiungimento di una certa soglia di prezzo, o all’acquisto di una certa quantità di articoli.

Oltre alla spedizione classica Woocommerce consente il ritiro in sede, spesso usato senza aggravio di spese, ma il bug fa si che anche al raggiungimento della soglia per la spedizione gratuita la tariffa di spedizione rimanga visibile, portando confusione nell’utente che a volte potrebbe decidere di abbandonare l’acquisto.

Cercando in rete, per ovviare a questo inconveniente, si trovano alcune soluzioni tra plug-in e stringhe di codice, ma tutti hanno il difetto di nascondere, oltre la tariffa di spedizione, anche il ritiro in sede. Mantengono attiva solo la spedizione gratuita, impedendo il ritiro in sede.

Perché è importante mantenere il ritiro gratuito in sede?

Immaginate di dover acquistare una bicicletta, magari usata: Le condizioni generali, la taglia, il peso, i difetti, sono fattori importanti da considerare all’acquisto, cosa che non è semplice e facile da fare attraverso qualche immagine. Diventa perciò necessaria una valutazione sul posto. Quindi è preferibile, magari abbinata al pagamento alla consegna, rendere selezionabile questa opzione.

Ed ecco che ci viene in soccorso il codice

In questo caso non serve l’uso di nessun plug-in, bastano poche righe di codice da inserire nel file functions.php del nostro tema child (qui ti spiego come fare) e il gioco è fatto.

Il codice:

/**
* Nascondi le tariffe di spedizione quando è disponibile la spedizione gratuita, ma mantieni Ritiro in sede 
* Valido dalla versione 2.6 di Woocommerce
*/
function nascondi_tariffa_spedizione_lascia_ritiro_sede( $rates, $package ) {
$new_rates = array();
foreach ( $rates as $rate_id => $rate ) {
// Only modify rates if free_shipping is present.
if ( 'free_shipping' === $rate->method_id ) {
$new_rates[ $rate_id ] = $rate;
break;
}
}
if ( ! empty( $new_rates ) ) {
//Save local pickup if it's present.
foreach ( $rates as $rate_id => $rate ) {
if ('local_pickup' === $rate->method_id ) {
$new_rates[ $rate_id ] = $rate;
break;
}
}
return $new_rates;
}
return $rates;
}
add_filter( 'woocommerce_package_rates', 'nascondi_tariffa_spedizione_lascia_ritiro_sede', 10, 2 );

Questo è il risultato con e senza il codice

Senza il codice

Il risultato senza il codice

 

Con il codice

Lascia un commento

10 risposte

  1. Ciao,
    io ho il problema che l’opzione “ritiro in sede” non mi appare nel carrello.
    Ho impostato la città del negozio fisico (Torino) come ritiro in sede ma al momento di scegliere i metodi di spedizione, anche inserendo la località del negozio, l’opzione “ritiro in sede” non appare e non capisco il motivo.

      1. Ciao Fabrizio, grazie della risposta.
        l’avevo provato ma a quel punto mi nasconde le altre opzioni come spedizione standard o contrassegno. Non riesco proprio a risolvere la cosa

  2. salve , ho importato 3 zone di spedizione
    italia
    europa
    resto del mondo (ovunque)

    ho eliminato le spunte della geolacalizzazione del negozio perchè mi dava sempre di defoult anche ai clienti italiani e esteri TARANTO nell indirizzo come prrovincia e questo faceva attivare come prima scelta la zona spedzione ITALIA
    rimuovendo la spunta, adesso come defoult esce resto del mondo (ovunque)

    ora però voglio che quando un cliente , visitatore nuovo viene nel sito, non deve apparire nessuna fascia di spedizione, ma solo dopo aver inserito la nazione
    come si fa?

    grazie di cuore e buon anno 🙂

  3. Salve io ho invece un altro problema. Unico metodo di spedizione il ritiro in sede ma in fase di carrello visualizzo la dicitura Spedizione: Ritiro in sede e successivamente Spedizione presso via ecc ecc. Indirizzo che il cliente inserisce per la fatturazione. Come posso risolvere?

    1. Ciao, scusa il ritardo, potrebbe dipendere dalle impostazioni, alcuni plugin possono influenzare la visualizzazione della scritta, se hai solo quella classe di spedizione prova a disattivare il calcolo delle spese di spedizione sulla pagina del carrello da opzioni, oppure puoi “nascondere” il tutto nel carrello con una funzione da aggiungere al functions del tema (soluzione pulita) oppure nascondendo la scritta con qualche riga di css (soluzione sporca)

Lascia un commento

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

Su di me

Genovese di origine, trasferito in Riviera, da sempre appassionato di tecnologia comincio nel 2003 a smanettare su internet per poi fare della passione un lavoro.

Articoli recenti

tapulli checkout field

Tapulli Checkout Field

Per un progetto un po’ particolare mi serviva un semplice sistema per nascondere alcuni campi di checkout di Woocommerce. Niente di particolare, ma per Woocommerce

Leggi Tutto »