2017-08-05 228 views
1

在Woocommerce中,我已经安装了运输插件,但它计算的是每个商品在购物车中的运费,而不是每个订单的总数。在WooCommerce中设置按购物车总重量计算的自定义运费费用

我需要的是这种方式来计算运费: - 首先是5美元 - 对于所有其他人,每公斤为1美元。

是否可以做到这一点?

随着如果在每个1千克车2项插件,它计算的运费为2 x $ 5 = $ 10
相反,我应该需要的是:$ 5(第一千) + $ 1(额外公斤) = $ 6(对于2公斤)

我没有回应插件开发人员,所以寻找工作。

+0

您可以显示您尝试过的工作吗? – MinistryofChaps

+0

我正在寻求解决方法或解决方案。我要求代码添加到我的plugin.php,以便购物车提交为总计。谢谢 – linda

+0

oops,我的问题发生了什么 - 某人编辑了它?我现在无法理解编辑。我想知道如何让我的插件根据购物车中的总重量计算出货量,而不是购物车中的每种商品。 – linda

回答

1

更新:你不需要任何插件(这样你就可以将其删除)

要获得总车重计算的航运率,具有:

  • 的$ 5中的初始量(对于第一公斤)为每个附加公斤
  • $ 1
  • 可变速率

执行以下操作:

1)设置在WooCommerce:
对于所有的“固定费率”航运法(每个航运区),设置1(量公斤)成本

enter image description here

所以成本

(一旦完成禁用/保存并启用/保存刷新woocommerce瞬态高速缓存)

2)自定义代码(由于运输单位成本为1美元/公斤,因此我们在计算总共购物车重量时增加了4公斤rrect费用)

add_filter('woocommerce_package_rates', 'custom_delivery_flat_rate_cost_calculation', 10, 2); 
function custom_delivery_flat_rate_cost_calculation($rates, $package) 
{ 
    // The total cart items weight 
    $cart_weight = WC()->cart->get_cart_contents_weight(); 

    foreach($rates as $rate_key => $rate_values){ 
     $method_id = $rate_values->method_id; 
     $rate_id = $rate_values->id; 
     if ('flat_rate' === $method_id) { 
      ## SHIPPING COSTS AND TAXES CALCULATIONS ## 
      $rates[$rate_id]->cost = $rates[$rate_id]->cost*($cart_weight+4); 
      foreach ($rates[$rate_id]->taxes as $key => $tax){ 
       if($rates[$rate_id]->taxes[$key] > 0){ 
        $tax_cost = number_format($rates[$rate_id]->taxes[$key]*($cart_weight+4)); 
        $rates[$rate_id]->taxes[$key] = $tax_cost; 
       } 
      } 
     } 
    } 
    return $rates; 
} 

代码放在您的活动子主题(或主题的function.php文件),或者也可以任何插件文件。

此代码已经过测试,适用于woocommerce版本2.6。x和3+

+0

谢谢您的建议。我们使用插件的原因是,有很多变量来计算基于重量和位置的运输价格,并提供多种服务,例如过夜,道路等,这些都是在API中定义的 - 不确定是否得到这个正确... – linda

+0

我想插入当前代码的外观如何插入图像 - 我如何插入图像(ctrl G不工作.. – linda

+0

@ linda我选择了一个插件,你是插件允许的囚犯一般情况下这是封闭的,所以使用这个插件不会让你得到你想要的东西......在这种情况下,没有人会真正帮助你。 – LoicTheAztec

相关问题