【发布时间】:2018-10-01 12:30:16
【问题描述】:
我在我的网站上使用 Woocommerce 和 Event Ticket 插件,当客户购买门票时,我不得不硬编码一个选择字段,并且根据他们的选择,价格会相应上涨。
其中大部分似乎工作正常,然后选择将保存为购物车数据的一部分。然后,一旦他们单击“添加到购物车”按钮,我就会尝试更新产品价格,以便将新价值添加到产品价格中。
以下是我所拥有的,它似乎正在更新价格,但令人讨厌的是,它添加了两次 $pickup_price 值(所以它添加了 6 而不是 3)。
奇怪的是,如果我在购物篮阶段更改数量并更新,它会得到正确的值,而不是在最初添加时。
我做错了什么以及如何防止这个问题?
这是我的代码:
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;
}
}
【问题讨论】:
标签: php wordpress woocommerce cart product