Getting minimum order amount for 'Free Shipping' method in checkout page Getting minimum order amount for 'Free Shipping' method in checkout page wordpress wordpress

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):

enter image description here

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