2017-09-24 77 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,它的工作完美:)干杯! –