Quando è disponibile la spedizione gratuita nel nostro sito ecommerce realizzato con il plugin Woocommerce, molto spesso possiamo riscontrare che nel carrello rimangono visibili e selezionabili anche gli altri metodi di spedizione, con conseguente rischio di confondere i nostri clienti.
Diventa quindi necessario impostare una modifica per nascondere altre spedizioni con SPEDIZIONE GRATUITA disponibile.
Il codice che segue andrebbe implementato nel file functions.php del nostro tema child:
add_filter( 'woocommerce_package_rates', 'nascondi_altri_metodi_con_spedizione_gratuita', 10, 2 );
function nascondi_altri_metodi_con_spedizione_gratuita( $rates, $package ) {
$spedizione_gratuita = array();
foreach ( $rates as $rate_id => $rate ) {
if ( 'free_shipping' === $rate->method_id ) {
$spedizione_gratuita [ $rate_id ] = $rate;
break; // Mostra solo la prima opzione di spedizione gratuita disponibile
}
}
return !empty($spedizione_gratuita) ? $spedizione_gratuita : $rates;
}
Mostrare solo la SPEDIZIONE GRATUITA in tutti i paesi tranne che in alcuni…
Qualora volessimo impostare la spedizione gratuita in tutti gli Stati, ma nasconderla solo in alcuni, dovremo implementare quanto segue:
add_filter('woocommerce_package_rates', 'nascondi_metodi_se_spedizione_gratuita_esclusi_alcuni_paesi', 100, 2);
function nascondi_metodi_se_spedizione_gratuita_esclusi_alcuni_paesi($rates, $package) {
// Paesi esclusi: qui NON nascondere gli altri metodi
$paesi_esclusi = array('IT', 'DE', 'FR'); // IT = Italia, DE = Germania, FR = Francia
// Controlla il paese di destinazione
$paese_destinazione = $package['destination']['country'];
// Se il paese è tra gli esclusi, mostra tutti i metodi
if (in_array($paese_destinazione, $paesi_esclusi)) {
return $rates;
}
// Altrimenti, se esiste la spedizione gratuita, mostra solo quella
$spedizione_gratuita = array();
foreach ($rates as $rate_id => $rate) {
if ('free_shipping' === $rate->method_id) {
$spedizione_gratuita[$rate_id] = $rate;
break;
}
}
return !empty($spedizione_gratuita) ? $spedizione_gratuita : $rates;
}
In questo codice occorre modificare ‘AK’,’HI’,’GU’,’PR’ inserendo i codici dei paesi che non hanno la spedizione gratuita.









Salve!
va bene anche per la versione 3.3.4 di WooCommerce?
Grazie
si, aggiornando all’ultima versione non ho avuto malfunzionamenti