I came across this problem today while setting up a new WooCommerce store.
If you have the Free Shipping method enabled under WooCommerce settings along with any other shipping method, such as Flat Rate, then your customer during checkout will be presented with two choices – both the Free Shipping method and the other shipping method. See the screenshot below.

woocommerce free shipping

Only present one shipping method to the user if it’s needed. For this example the user should get free shipping on any order over €50. You risk losing the sale presenting more than the necessary choices!

Solution

Step 1: FTP into your hosting account.

Step 2: Download the functions.php file from your themes folder. Example: /public_html/wp-content/themes/wooshop/functions.php

download functions.php

Step 3: Open the functions.php file in an editor. My favourite is PSPad.

Step 4: Add the following code to the end of the file just before the final ?>

// Hide ALL shipping options when free shipping is available
 add_filter( 'woocommerce_available_shipping_methods', 'hide_all_shipping_when_free_is_available' , 10, 1 );
/**
* Hide ALL Shipping option when free shipping is available
*
* @param array $available_methods
*/
function hide_all_shipping_when_free_is_available( $available_methods ) {

if( isset( $available_methods['free_shipping'] ) ) :

// Get Free Shipping array into a new array
$freeshipping = array();
$freeshipping = $available_methods['free_shipping'];

// Empty the $available_methods array
unset( $available_methods );

// Add Free Shipping back into $avaialble_methods
$available_methods = array();
$available_methods[] = $freeshipping;

endif;

return $available_methods;
}

Step 5: Re-upload the functions.php file overwriting the old one. (might be a good idea to take a backup of the functions.php file just in case).

Step 6: Check that it has worked.

woocommerce free shipping default

We recommend TSOHost.com for WooCommerce Hosting – Click here