2017-05-09 67 views
0

我需要修改运输选项的费用,具体取决于我的购物车/订单中的内容。 成本必须在购物车页面和结帐页面上计算,当然,订单完成后也可以保存。如何在woocommerce中动态修改运费选项价格?

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

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; 
} 
+0

你是否检查过你是否收到“flat_rate:4”请求? –

回答

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的瞬态功能缓存。所以当你测试的时候,确保你改变了物品数量,这样包率就能正确更新,或者你可以在每次刷新时清空购物车:)

+0

谢谢,这应该在购物车页面和结帐页面上工作? – Pipoo

+0

$ woocommerce-> cart-> get_cart()应该在结帐页面工作? – Pipoo

+0

和$ rate-> cost = 1000只会影响当前订单的成本? – Pipoo