基於the official WooCommerce snippet code,使得一些光線的變化,您將可以只隱藏你的第一個扁平率時包郵可用:
add_filter('woocommerce_package_rates', 'conditionally_hide_shipping_methods', 100, 2);
function conditionally_hide_shipping_methods($rates, $package) {
// HERE yours 2nd flat rate "Express Shipping" (that you never hide) in the array:
$flat_rates_express = array('flat_rate:5', 'flat_rate:12', 'flat_rate:14');
$free = $flat2 = array();
foreach ($rates as $rate_key => $rate) {
// Updated Here To
if (in_array($rate->id, $flat_rates_express))
$flat2[ $rate_key ] = $rate;
if ('free_shipping' === $rate->method_id)
$free[ $rate_key ] = $rate;
}
return ! empty($free) ? array_merge($free, $flat2) : $rates;
}
代碼放在您的活動子主題的function.php文件(或主題)或任何插件文件中。
在WooCommerce 3上測試並工作。
刷新航運緩存:
1)首先清空購物車。
2)此代碼已保存在您的function.php文件中。
3)進入運輸區域設置並禁用一個「統一費率」(例如)和「保存」。然後重新啓用「統一費率」和「保存」。 你完成了,你可以測試它。
你好盧瓦克, 非常感謝你的幫助。你不知道我對你的善意幫助感到多麼欣賞。 :) 它適用於我的Zone 1.但是對於Zone 2和Zone 3區域,它只顯示免費送貨,但不包含Express Shipping選項。我相信這是因爲對於每個運輸區域,每個快遞都有不同的費率ID。例如,Zone 2的快速運費標識爲flat_rate:12,Zone 3的快速運費標識爲flat_rate:14。 如何更改代碼或我的設置,以使條件費率適用於所有3個區域? 謝謝! –
謝謝Loic,它的工作完美:)乾杯! –