2017-09-24 108 views
1

可在WooCommerce 3,我有這方面的送貨方式(設置):隱藏細節統一費率時,免費送貨是WooCommerce 3

  1. 免費送貨:free_shipping:1 - 最小訂購量設定爲$50
  2. 正常運費flat_rate:3 - 金額$5
  3. 特快專遞flat_rate:5 - 金額$10

我想快遞發件選項始終可用(如圖所示)。

但當免費送貨可用(這意味着客戶擁有超過50 $的車),我想隱藏正常出貨只。

所以當Free shipping可用(或隱藏),可用的運費將正常出貨和快遞運輸。

這可能嗎?我如何在WooCommerce 3上獲得這個?

回答

1

基於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)進入運輸區域設置並禁用一個「統一費率」(例如)和「保存」。然後重新啓用「統一費率」和「保存」。 你完成了,你可以測試它。

+0

你好盧瓦克, 非常感謝你的幫助。你不知道我對你的善意幫助感到多麼欣賞。 :) 它適用於我的Zone 1.但是對於Zone 2和Zone 3區域,它只顯示免費送貨,但不包含Express Shipping選項。我相信這是因爲對於每個運輸區域,每個快遞都有不同的費率ID。例如,Zone 2的快速運費標識爲flat_rate:12,Zone 3的快速運費標識爲flat_rate:14。 如何更改代碼或我的設置,以使條件費率適用於所有3個區域? 謝謝! –

+1

謝謝Loic,它的工作完美:)乾杯! –