WooCommerce-更新订单项目价格并重新计算总计

时间:2018-02-22 作者:user1049961

更改订单发货项目价格和重新计算总计的正确方法是什么?我正在努力做到:

$order = new \\WC_Order(2051);
foreach ($order->get_items(\'shipping\') as $key => $item) {
    wc_update_order_item_meta($key,\'cost\',0);
    wc_update_order_item_meta($key,\'total_tax\',0);
    wc_update_order_item_meta($key,\'taxes\',[]);
}

$order->calculate_totals();
这似乎不起作用,并且不使用WooCommerce数据存储功能。。

1 个回复
SO网友:sergio milardovich

可能您已经找到了更好的方法,因为这个问题已经很老了,但到目前为止,我只能通过手动获取价差,然后使用order对象中的set\\u total方法来实现:

$order = new \\WC_Order(2051);
$diff = 0;
foreach ($order->get_items(\'shipping\') as $key => $item) {
    wc_update_order_item_meta($key,\'cost\',0);
    wc_update_order_item_meta($key,\'total_tax\',0);
    wc_update_order_item_meta($key,\'taxes\',[]);
    $diff += $item->get_total();
}
$newTotal = $order->calculate_totals() - $diff;
$order->set_total($newTotal);
$order->save();
我会把这个贴在这里,因为它可能对某些人有用。如果您看到了这一点,并且找到了更好/更干净的解决方法,我希望看到:-)。

结束

相关推荐