Automatically select Free Shipping if it becomes available
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
add_action( 'wpo_cart_updated_with_user', function () { $packages = WC()->shipping()->get_packages(); $chosen_shipping_methods = WC()->session->get( 'chosen_shipping_methods' ); $free_shipping_was_found = false; foreach ( $packages as $i => $package ) { foreach($package['rates'] as $rate_id=>$data) if(strstr($rate_id, "free_shipping") !==false) $free_shipping_was_found = true; } if(!$free_shipping_was_found ) WC()->session->set( 'free_shipping_was_set', false); if ( $free_shipping_was_found AND !WC()->session->get( 'free_shipping_was_set', false) ) { foreach ( $packages as $i => $package ) { foreach($package['rates'] as $rate_id=>$data) if(strstr($rate_id, "free_shipping") !==false) { $chosen_shipping_methods[ $i ] = $rate_id; } } WC()->session->set( 'chosen_shipping_methods', $chosen_shipping_methods ); WC()->session->set( 'free_shipping_was_set', true ); } }); |