修改结帐订单项后如何更新订单总额?

问题描述 投票:0回答:1

我正在尝试使用钩子

'woocommerce_checkout_create_order_line_item'
提交订单后修改订单行子/总计。我可以更改这些值,它们会在订单电子邮件中正确显示,但订单总数不会更新。

add_action('woocommerce_checkout_create_order_line_item', 'css_modify_order', 10, 4);
function css_modify_order($item, $cart_item_key, $values, $order) {
    $item->set_subtotal(50);
    $item->set_total(50);
}

我认为,由于这是在将订单项添加到订单之前对其进行修改,因此在保存订单之前,WooCommerce 将在其代码执行中进一步获得正确的总金额。

我尝试过使用

$item->save();
$item->apply_changes()
,但订单总数没有变化。
$order->save_items()
会引发错误,而
$order->save()
则没有效果。

我一定是错过了什么。如何修改订单项目并正确显示订单总额?

woocommerce hook-woocommerce
1个回答
0
投票

由于 WooCommerce 总计是在根据购物车商品提交订单时预先计算的,因此如果您像实际所做的那样对这些商品进行更改,则需要告诉 WooCommerce 重新计算总计。

为此,您应该在创建订单后使用

WC_Abstract_Order
calculate_totals()
方法,并带有
woocommerce_checkout_order_created
钩子:

add_action('woocommerce_checkout_order_created', function($order){ 
    $order->calculate_totals(); 
});

代码位于子主题的functions.php文件中(或插件中)。

© www.soinside.com 2019 - 2024. All rights reserved.