最近把 WooCommerce 更到新版后,在设定运送方式的地方,会发现到先前的像单一运费、免运费、货到付款.... 似乎都不见了,而并不是不见了,WooCommerce2.6 版则是将运送方式变成一个模组统来控管,之前的那些选项则全部集合在里面,当需要时再逐一的新增,虽然说 WooCommerce 内建就有免运费的机制,同时在消费金额达到门槛时,则是出现免运费选项,而不是直接跳到免运费,这样的结帐方式,实在有点怪异,不符目前大家的购物习惯,因此一块来看看,要如何来修正这个免运费的设定吧!


WooCommerce 免运费修正:

修正:免运费
适用版本:2.6+

Step1
首先,切到 WooCommerce 设定 / 运送方式,接着点右下的新增按钮。


Step2
接着从下拉选单中,选择所需的运费方式。


Step3
新增完毕后,再点下方的设定


Step4
就可设定运费的费用。


Step5
完成单一运费后,接下来再新增一个免运费。


Step6
新增完毕后,再设定免运费的门槛外,同时在下拉选单中,设定免费的条件。


Step7
这样就完成单一运费与免运费的运送方式啦!


Step8
这时当购物金额超过刚所设定的的 1000 元,在运送方式的地方,却出现免费运的选项,这实在有点怪异。


Step9
接着开启主题中的 functions.php,再加入以下的修正码。

add_filter( 'woocommerce_package_rates', 'hide_shipping_when_free_is_available', 100 );
function hide_shipping_when_free_is_available( $rates ) {
	$free = array();


	foreach ( $rates as $rate_id => $rate ) {
		if ( 'free_shipping' === $rate->method_id ) {
			$free[ $rate_id ] = $rate;
			break;
		}
	}


	return ! empty( $free ) ? $free : $rates;
}


Step10
这时再回到原来的结帐画面,在运费方式的地方,就会自动变成免运费啦!