修正woocommerce滿額免運費時還有顯示運費選項-加入顯示超商取貨免運費等其他運費項目

以下範例是使用RY WooCommerce Tools綠界付款,如採用其他運用方式請更改ry_ecpay_shipping_cvs_711這個位置的代碼,只要對應好運送方式代碼,任何運送方式都會顯示出來, 需要打開主題編輯器,打開後選右邊佈景函式庫(functions.php),在最底部加上。 如果佈景正在使用中可能會造成(functions.php)無法存檔,請改用FTP或其他方式上傳(functions.php)到佈景內。
/**
滿額免運修正
*/
function my_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;
        }
    }
 
    /* 以下為需要新增修正的部份 */
    // 免運費時 仍顯示超商取貨
	if (!empty($free)) {
        foreach ( $rates as $rate_id => $rate ) {
            if ( 'ecpay_shipping'  === $rate->method_id )
						 {
                $free[ $rate_id ] = $rate;
                break;
            }
        }
    }
    if (!empty($free)) {
        foreach ( $rates as $rate_id => $rate ) {
            if ( 'ry_ecpay_shipping_cvs_711' === $rate->method_id )
            {$free[ $rate_id ] = $rate;
            break;
            }
        }
    }
    if (!empty($free)) {
        foreach ( $rates as $rate_id => $rate ) {
            if ( 'ry_ecpay_shipping_cvs_family' === $rate->method_id )
            {$free[ $rate_id ] = $rate;
            break;
            }
        }
    }
    if (!empty($free)) {
        foreach ( $rates as $rate_id => $rate ) {
            if ( 'ry_ecpay_shipping_cvs_hilife' === $rate->method_id )
            {$free[ $rate_id ] = $rate;
            break;
            }
        }
    }
    /* 以上為需要新增修正的部份 */
 
    return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );

2 thoughts on “修正woocommerce滿額免運費時還有顯示運費選項-加入顯示超商取貨免運費等其他運費項目

發佈留言