2016-05-23 70 views
2

我正在使用woocommerce_before_calculate_totals在woocommerce中添加額外的價格。如果您在購物車中添加產品並選擇了價格,則總價在結帳時是正確的,但是如果客戶在同一流程中創建了自己的帳戶並結帳,那麼在付款後價格會增加兩次。這是我的代碼woocommerce_before_calculate_totals掛鉤不能正常工作

function calculate_gift_wrap_fee($cart_object) { 
$additionalPrice = 100; 
foreach ($cart_object->cart_contents as $key => $value) { 
if(isset($value["gift_wrap_fee"])) { 
$orgPrice = floatval($value['data']->price); 
$value['data']->price = ($orgPrice + $additionalPrice); 
     } 

} 

} 

請幫

回答

1

如果客戶選擇在當時結賬Create Account選項,woocommerce調用以重新計算車總計揭示(客戶賬戶後註冊並自動記錄它們)calculate_totals()秒時間在註冊前沒有任何基於角色的折扣。

所以你可以做的是檢查"reload_checkout"會話,這將在第二次調用calculate_totals()之前設置。

所以更新calculate_gift_wrap_fee這樣

function calculate_gift_wrap_fee($cart_object) { 
    if(!WC()->session->__isset("reload_checkout")) { 
     /* Gift wrap price */ 
     $additionalPrice = 100; 
     foreach ($cart_object->cart_contents as $key => $value) { 
      if(isset($value["gift_wrap_fee"])) { 
       $orgPrice = floatval($value['data']->price); 
       $value['data']->price = ($orgPrice + $additionalPrice); 
      } 
     } 
    } 
} 
add_action('woocommerce_before_calculate_totals', 'calculate_gift_wrap_fee', 99); 
+0

是它現在的工作,但是我測試,如果有任何問題,我會聯繫你。謝謝。 – tst2016