1
我的網站使用Woocommerce和Event Ticket插件,並且iive必須硬編碼選擇字段,以便客戶購買票據時根據其選擇的價格將相應地提高。在woocommerce_before_calculate_totals掛鉤中,set_price計算添加了兩次
它的多數似乎工作正常,然後將選擇保存爲購物車數據的一部分。然後,我試圖更新產品價格,一旦他們點擊添加到購物車按鈕,以便它添加到產品價格的新價值。
下面是我已經和這似乎是更新價格,但煩人它添加$pickup_price
值的兩倍(所以不是3它增加了6)。
奇怪的是,如果我在籃子階段更改數量並更新,它會得到正確的值,而不是最初添加時的數量。
我在做什麼錯誤以及如何防止此問題?
這裏是我的代碼:
add_action('woocommerce_before_calculate_totals', 'add_pickup_cost', 10, 1);
function add_pickup_cost($cart_object, $cart_item_data) {
foreach ($cart_object->get_cart() as $cart_item) {
$wc_product = $cart_item['data'];
// My custom field which is returning the additional cost
$pickup_price = $cart_item['pickupOptions'];
$product_price = method_exists($wc_product, 'get_price') ? floatval($wc_product->get_price()) : floatval($wc_product->price);
$new_price = $product_price + $pickup_price;
method_exists($wc_product, 'set_price') ? $wc_product->set_price($new_price) : $wc_product->price = $new_price;
}
}
的答覆@LocicTheAztec感謝。我嘗試過使用你的代碼,但不幸的是它仍然增加了兩次額外的'pickup選項'值(所以不是增加3英鎊,而是增加6英鎊)。 – WillL
@WillL對於我來說,這段代碼沒有問題。沒有重複...所以可能是某個地方有特定的東西這是造成你的問題。 – LoicTheAztec
@LocicTheAztec奇怪,當我點擊購物車中的「更新購物車」按鈕或刷新購物車時,價格更新爲正確金額。但是從最初的「添加到購物車」中,當它將我的價格再次顯示爲兩倍時。任何想法,爲什麼這可能是一種方式,我可以強制更新/刷新後添加到購物車? – WillL