Getting minimum order amount for 'Free Shipping' method in checkout page
The code of this answer: How to get minimum order amount for free shipping in woocommerce
is obsolete with WooCommerce version 2.6+, but it was helpful for this functional answer…
After making some search and some tries, I have found the way to get the minimum Order amount that is set in the Free Shipping method, for a specific Zone (Region):
Here is the working tested code (explanations are commented inside):
// Here you get (as you already know) the used shipping method reference$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );// Replacing inside the string ':' by '_'$option_value = str_replace(':', '_', $chosen_methods[0]);// We concatenate the string with additional sub-strings$option_value = 'woocommerce_'.$option_value.'_settings';// Just a test => outputting the string to see what we getecho $option_value; echo '<br>';// Now we can get the options values with that formatted string$free_shipping_settings = get_option( $option_value );// Just for test => we output the (pre-formatted) array of values to checkecho '<pre>'; print_r($free_shipping_settings); echo '</pre><br>'; // Here we get the value of the order min amount (Finally!)$order_min_amount = $free_shipping_settings['min_amount'];// We output the value (to check)echo 'Order min amount: '.$order_min_amount;
Bingo! you get it.
Right way for get this..
function get_free_shipping_minimum($zone_name = 'England') { if ( ! isset( $zone_name ) ) return null; $result = null; $zone = null; $zones = WC_Shipping_Zones::get_zones(); foreach ( $zones as $z ) { if ( $z['zone_name'] == $zone_name ) { $zone = $z; } } if ( $zone ) { $shipping_methods_nl = $zone['shipping_methods']; $free_shipping_method = null; foreach ( $shipping_methods_nl as $method ) { if ( $method->id == 'free_shipping' ) { $free_shipping_method = $method; break; } } if ( $free_shipping_method ) { $result = $free_shipping_method->min_amount; } } return $result;}
You need to get the option by getting ,
get_option( 'woocommerce_free_shipping_1_settings' );
And then unserialize the data by doing ,
maybe_unserialize();