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 );
}
});