Woocommerce: Come Nascondere gli altri metodi di spedizione quando è disponibile “Free Shipping”

Home/Blog/Woocommerce: Come Nascondere gli altri metodi di spedizione quando è disponibile “Free Shipping”
Nascondere gli altri metodi di spedizione quando è disponibile Free Shipping

Quando si abilita la spedizione gratuita dopo un determinato prezzo, ci si scontra spesso col problema, per chi acquista, di dover flaggare manualmente la spedizione gratuita.

Per risolvere definitivamente il problema:

Snippet per Woocommerce 2.6+

Nasconde tutto tranne che free_shipping se è disponibile ed è compatibile con le zone di spedizione.

Il codice relativo alla tua versione di Woocommerce deve essere aggiunto al file functions.php del tema o tema child.

/**
* Hide shipping rates when free shipping is available.
* Updated to support WooCommerce 2.6 Shipping Zones.
*
* @param array $rates Array of rates found for the package.
* @return array
*/
function my_hide_shipping_when_free_is_available( $rates ) {
$free = array();
foreach ( $rates as $rate_id => $rate ) {
if ( ‘free_shipping’ === $rate->method_id ) {
$free[ $rate_id ] = $rate;
break;
}
}
return ! empty( $free ) ? $free : $rates;
}
add_filter( ‘woocommerce_package_rates’, ‘my_hide_shipping_when_free_is_available’, 100 );

Come faccio a mostrare solo il Local pickup e il free shipping?

Questo può essere fatto utilizzando un plugin gratuito https://wordpress.org/plugins/wc-hide-shipping-methods/ .

Si Può anche mostrare solo il free shipping.

Snippets per Woocommerce 2.5

/**
* woocommerce_package_rates is a 2.1+ hook
*/
add_filter( ‘woocommerce_package_rates’, ‘hide_shipping_when_free_is_available’, 10, 2 );
/**
* Hide shipping rates when free shipping is available
*
* @param array $rates Array of rates found for the package
* @param array $package The package array/object being shipped
* @return array of modified rates
*/
function hide_shipping_when_free_is_available( $rates, $package ) {
// Only modify rates if free_shipping is present
if ( isset( $rates[‘free_shipping’] ) ) {
// To unset a single rate/method, do the following. This example unsets flat_rate shipping
unset( $rates[‘flat_rate’] );
// To unset all methods except for free_shipping, do the following
$free_shipping = $rates[‘free_shipping’];
$rates = array();
$rates[‘free_shipping’] = $free_shipping;
}
return $rates;
}

Mostra solo la spedizione gratuita in tutti gli stati tranne…

Mostra solo la spedizione gratuita in tutti gli stati tranne l’elenco di esclusione. Nascondi free shipping se il cliente è in uno degli stati elencati:

/**
* Hide ALL shipping options when free shipping is available and customer is NOT in certain states
* Hide Free Shipping if customer IS in those states
*
* UPDATED FOR WOOCOMMERCE 2.1
*
* Change $excluded_states = array( ‘AK’,’HI’,’GU’,’PR’ ); to include all the states that DO NOT have free shipping
*/
add_filter( ‘woocommerce_package_rates’, ‘hide_all_shipping_when_free_is_available’ , 10, 2 );
/**
* Hide ALL Shipping option when free shipping is available
*
* @param array $available_methods
*/
function hide_all_shipping_when_free_is_available( $rates, $package ) {
$excluded_states = array( ‘AK’,’HI’,’GU’,’PR’ );
if( isset( $rates[‘free_shipping’] ) AND !in_array( WC()->customer->shipping_state, $excluded_states ) ) :
// Get Free Shipping array into a new array
$freeshipping = array();
$freeshipping = $rates[‘free_shipping’];
// Empty the $available_methods array
unset( $rates );
// Add Free Shipping back into $avaialble_methods
$rates = array();
$rates[] = $freeshipping;
endif;
if( isset( $rates[‘free_shipping’] ) AND in_array( WC()->customer->shipping_state, $excluded_states ) ) {
// remove free shipping option
unset( $rates[‘free_shipping’] );
}
return $rates;
}

Spero di essere stato d’aiuto 🙂

2017-05-05T12:30:53+00:00

One Comment

  1. Flavio 5 maggio 2017 at 17:13 - Reply

    Grazie del post mi è stato molto utile.

Leave A Comment