If you ever come to situation where you need to make “Free Shipping” as the only shipping option when your total cart total is more than a set amount, then this post will provide you some insight or idea.

For example, you set amount is $50. If user cart total is more than $50, then apply free shipping only.

Step 1: Open your functions.php file at your current theme folder (wp-content/themes/[THEME]/functions.php) You can download functions.php file from FTP, edit then upload again, OR you cab go to WordPress Admin -> Appearance -> Editor, and click functions.php to edit then save.

Step 2: Put below code to the bottom of the file:

add_filter( 'woocommerce_available_shipping_methods', 'remove_standard_shippings_when_free' , 10, 1 );

function remove_standard_shippings_when_free( $available_methods ) {

    //get cart total from session
    $total = 0;
    $session_cart = $woocommerce->session->cart;
    if(count($session_cart) > 0) {
        foreach($session_cart as $cart_product)
            $total = $total + $cart_product['line_subtotal'];

    if( isset( $available_methods['free_shipping'] ) ) {
        // remove all standard shipping options
        unset( $available_methods['flat_rate'] );
        unset( $available_methods['international_delivery'] );
        unset( $available_methods['local_delivery'] );
        unset( $available_methods['local_pickup'] );

 return $available_methods;
WooCommerce Standard Shipping Options

WooCommerce Standard Shipping Options

Final Step: Save the file above and done. You’ve told WooCommerce to remove all other shipping options (flat rate, internatinal delivery, local pickup and local delivery) when cart/order total is over $50 and apply free shipping option only.

Hope you get some idea on how to tweak WooCommerce by reading more my articles.