WooCommerce 使用綠界超商取貨時 依據免運費門檻顯示運送方式

2017-07-05

使用綠界超商取貨時

可以根據達到免運費門檻出現兩個不同的運送方式

開啟綠界物流外掛套件的這隻檔案
wp-cotent/plugins/ecpay_shipping/ECPay-shipping-integration.php

找到 calculate_shipping 這個方法
並修改如下

function calculate_shipping($package = array()) {

    // 省略前面程式部分

    // 設置免運費門檻 499
    if($package["contents_cost"] >= 499){
        $shipping_total = 0;
    }else{
        $shipping_total = $fee;
    }

    $rate = array(
        'id' => $this->id,
        'label' => $this->title,
        'cost' => $shipping_total
    );

    $this->add_rate($rate);
}

門檻金額可以設定成自己希望的數字

但有另一個問題出現
當使用前篇文章提到的 WooCommerce 修正購物車免運費時 顯示兩個運送方式選項的問題的解決方法後
綠界的超商取貨便無法出現
所以這邊還需要將前篇文章提到的程式作修正
如下

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;
		}
	}

    /* 以下為需要新增修正的部份 */
    // 免運費時 仍顯示超商取貨
    if (!empty($free)) {
        foreach ( $rates as $rate_id => $rate ) {
        	if ( 'ecpay_shipping' === $rate->method_id ) {
        		$free[ $rate_id ] = $rate;
	    		break;
	    	}
	    }
	}
    /* 以上為需要新增修正的部份 */

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

這樣便可以跟原始 WooCommerce 運送方式一起使用

ref:
http://blog.darkwing.co/2017/05/woocommerce-%E5%A2%9E%E5%8A%A0%E6%BB%BF%E9%A1%8D%E8%B6%85%E5%95%86%E5%8F%96%E8%B2%A8%E5%85%8D%E9%81%8B%E8%B2%BB%E5%8A%9F%E8%83%BD-%E4%BB%A5%E7%B6%A0%E7%95%8Cecpay%E7%82%BA%E4%BE%8B/

發表迴響

彙整

分類