Woocommerce: come impostare le spese di spedizione
Pubblicato il 30/11/2020 da Giuseppe Riccio

La procedura per impostare le spese di spedizione su Woocommerce è abbastanza semplice. Per prima cosa dobbiamo accertarci che siano correttamente impostate le nazioni in cui è abilitata la vendita. Il comportamento preimpostato è "Vendi in tutte le nazioni" ma se il nostro store si rivolge ad un pubblico più ristretto possiamo anche limitarlo a specifici paesi.
Poi andiamo in WooCommerce > Impostazioni > Spedizione e aggiungiamo una nuova voce associata ad esempio al nostro paese. Definite le voci "Nome zona" e "Regioni" possiamo aggiungere le tariffe di spedizione in base a criteri specifici, come Tariffa unica, Spedizione gratuita e Ritiro in sede.
Con l'opzione Tariffa Unica, è possibile impostare un costo aggiuntivo per la spedizione da sommare al totale del carrello mentre con l'opzione Ritiro in sede consentiamo al cliente di ritirare il suo ordine direttamente in negozio. In alternativa alle due suddette, l'opzione Spedizione Gratuita consente di impostare una soglia minima di spesa, oltre la quale il negoziante sconta del tutto le spese di spedizione. Per impostarla scegliamo Spedizione gratuita tra i metodi, aspettiamo che venga aggiunto nella lista, poi in Modifica impostiamo la condizione per attivarla che nella maggior parte dei casi è un importo minimo dell'ordine ma può essere anche un codice promozionale o una combinazione codice/importo.
Una volta configurata la spedizione gratuita, al superamento della soglia impostata, nella fase di checkout verranno mostrate tutte le opzioni di spedizione attive lasciando al cliente la scelta tra tariffa unica e spedizione gratuita. Questo comportamento, oltre ad essere poco funzionale, può generare confusione e portare il cliente a non proseguire con il suo ordine. Pertanto andiamo ad aggiungere un piccolo snippet di codice nel functions.php del nostro tema per ovviare al problema, facendo in modo che, al raggiungimento della soglia minima di spesa, le altre tariffe di spedizione vengano nascoste:
function custom_package_rates( $rates ) {
$free = array();
foreach ( $rates as $rate_id => $rate ) {
if ( 'free_shipping' === $rate->method_id ) {
foreach ( $rates as $rate_id => $rate ) {
if ( 'flat_rate' !== $rate->method_id ) {
$free[ $rate_id ] = $rate;
}
}
break;
}
}
return !empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'custom_package_rates', 10, 2 );
Da notare il secondo ciclo foreach all'interno della prima istruzione condizionale che consente di mostrare anche il Ritiro in sede, qualora fosse impostato, nascondendo solo le modalità a tariffa unica. Una volta inserito il codice nel file functions.php per visualizzare correttamente il nuovo comportamento andiamo ad eliminare le sessioni cliente in WooCommerce > Impostazioni > Stato > Strumenti e clicchiamo sul pulsante Svuota.