2017-05-09 36 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