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
8 risposte
Grazie!! mi hai risolto la giornata con questo articolo! <3
Prego, felice di poter aiutare
Molto utile, grazie.
Ma se sono più sedi? Quindi presenti più voci?
Se sono più sedi la faccenda si complica un po’.
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.
Prova a trascinare il ritiro in sede in alto rispetto agli altri metodi di spedizione
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
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 🙂