Trying to emulate Woocommerce code for hiding each unused shipping rate during an order transaction.
WC themselves publish the following php code that hides other shipping rates when the cart subtotal qualifies for free shipping (ie local_pickup and flat_rate are hidden in the cart):
/**
* 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 );
Replacing ‘free_shipping’ with ‘flat_rate’ or ‘local_pickup’ does not produce the same effect?
What am I doing wrong?
Many thanks in advance 🙂