【问题标题】:How to modify shipping options price dynamically in woocommerce?如何在 woocommerce 中动态修改运输选项价格?
【发布时间】:2017-08-17 05:14:25
【问题描述】:

我需要根据我的购物车/订单中的内容修改运费选项。 费用必须在购物车页面和结帐页面计算,当然在订单完成时保存。

这就是我所做的,但似乎没有效果,请问有人有想法吗?

add_filter('woocommerce_package_rates','over_cost',100,2);
function over_cost($rates,$package) {

global $woocommerce;
$items = $woocommerce->cart->get_cart();
$qty=0;

        foreach($items as $item => $values) { 
            $_product = $values['data']->post; 
            $qty= $qty + $values['quantity']; 
          } 


    foreach ($rates as $rate) {

     if ($rate->cost=='flat_rate:4') {$rate->cost = 5*$qty;}


    }

    return $rates;
}

【问题讨论】:

  • 您是否检查过请求中是否收到“flat_rate:4”?

标签: woocommerce


【解决方案1】:
    add_filter('woocommerce_package_rates','test_overwrite_fedex',100,2);
    function test_overwrite_fedex($rates,$package) {

        foreach ($rates as $rate) {

            //Set the price
            $rate->cost = 1000;

            //Set the TAX
            $rate->taxes[1] = 1000 * 0.2;

        }

        return $rates;
    }

Woocommerce 使用 wordpress 瞬态函数缓存费率。因此,当您进行测试时,请确保更改商品数量,以便正确更新包裹费率,或者您可以在每次刷新时清空购物车:)

【讨论】:

  • 谢谢,这应该适用于购物车页面和结帐页面?
  • $woocommerce->cart->get_cart() 应该在结帐页面中工作吗?
  • 和 $rate->cost = 1000 只会影响当前订单的成本?
  • $woocommerce->cart->get_cart() 应该在结帐页面中工作吗? - 是的 $rate->cost = 1000 只会影响当前订单的成本? - 是的。仅当前订单
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-27
  • 2020-05-20
  • 2021-06-03
  • 1970-01-01
  • 2012-08-03
  • 2017-08-07
相关资源
最近更新 更多