
In quest’articolo voglio spiegarti come mostrare o nascondere i metodi di spedizione WooCommerce in base al totale del carrello, senza utilizzare alcun plugin.
Di default WooCommerce permette di impostare un limite minimo di ordine per il quale attivare la spedizione gratuita, ma ciò non è possibile per altri metodi di spedizione.
Per ottenere lo stesso risultato con altri metodi di spedizione è necessario inserire un semplicissimo snippet di codice che sfrutta l’hook woocommerce_package_rates, all’interno del file functions.php del tuo template:
add_filter( 'woocommerce_package_rates', 'custom_package_rates', 10, 2 ); function custom_package_rates( $rates, $package ) { $total = WC()->cart->cart_contents_total; if( 120 >= $total ) { unset( $rates['flat_rate:9'] ); unset( $rates['flat_rate:10'] ); } return $rates; }
La parte più importante dello snippet è questa:
if( 120 >= $total ) { unset( $rates['flat_rate:9'] ); unset( $rates['flat_rate:10'] ); }
Qui stiamo dicendo a WooCommerce che se il numero 120 è maggiore o uguale al totale del carrello, il plugin deve disattivare due metodi di pagamento che hanno rispettivamente i valori flat_rate:9 e flat_rate:10.
In poche parole, se nel carrello ci sono prodotti per un valore inferiore a 120€ WooCommerce nasconderà questi due metodi di pagamento.
Puoi cambiare questo valore a tuo piacimento, oppure puoi anche fare l’opposto, ossia nascondere i prodotti quando il valore del carrello è maggiore a 120€ (o alla cifra che desideri). Ti basterà sostituire al segno “>” quello “<“.
if( 120 <= $total ) { unset( $rates['flat_rate:9'] ); unset( $rates['flat_rate:10'] ); }
Ma dove trovo i valori delle tariffe di spedizione?
Trovare i valori dei metodi di spedizione
Niente di più semplice: in genere corrispondono al valore del checkbox da spuntare per selezionare il metodo di pagamento nella pagina Carrello di WooCommerce.
Clicca col destro e seleziona “Ispeziona” sul checkbox relativo al metodo di pagamento del quale vuoi conoscere il campo value.
Ti ricordo che lo snippet va inserito in fondo al file functions.php del tuo template. Ti consiglio di utilizzare un tema child per l’implementazione.
In alternativa, anche se non è la soluzione più pulita, puoi inserire il codice con un plugin come Code Snippets.
Mostrare o nascondere i metodi di spedizione WooCommerce in base al totale del carrello di sicuro ti aiuterà a creare una esperienza utente migliore e mettere in atto le tue strategie di business.
Spero davvero di essere stato d’aiuto.
Ovviamente scrivimi pure nei commenti se qualcosa di è poco chiaro oppure se lo snippet non funziona più.
Grazie, molto utile!
Figurati :)
Ciao Lorenzo, ti ringrazio per la guida innanzitutto.
Sto utilizzando Code Snippet, nel mio caso vorrei solo nascondere il metodo di spedizione tradizionale una volta raggiunta la quota utile per la spedizione gratuita. (Gli utenti ora vedono la voce spedizione gratuita e subito sotto la voce spedizione €xxx)
add_filter( ‘woocommerce_package_rates’, ‘custom_package_rates’, 10, 2 );
function custom_package_rates( $rates, $package ) {
$total = WC()->cart->cart_contents_total;
if( 29 <= $total ) {
unset( $rates['flat_rate:3'] );
}
return $rates;
}
La voce di spedizione classica 'flat_rate:3' però continua ad apparire. Sicuramente mi perdo una modifica…
Ho risolto, banalmente colpa della cache XD.
Grazie ancora!
Menomale dai, ieri ci stavo impazzendo perché mi sembrava tutto corretto. Poi ho mollato perché s’era fatto tardi :D
Ciao, io ho il medesimo problema, ho 3 tipi di spedizione:
Flat [flat_rate:1]
Gratuita [free_shipping:3]
Ritiro in negozio [local_pickup:5]
inserendo il codice che ci hai gentilmente fornito però, si cancella sia la spedizione flat che la gratuita e rimane il ritiro in negozio.
Questo è il mio codice
add_filter( ‘woocommerce_package_rates’, ‘custom_package_rates’, 10, 2 );
function custom_package_rates( $rates, $package ) {
$total = WC()->cart->cart_contents_total;
if( 50 >= $total ) {
unset( $rates[‘flat_rate:1’] );
}
return $rates;
}
Secondo te quale potrebbe essere il problema?
grazie mille