可能您已经找到了更好的方法,因为这个问题已经很老了,但到目前为止,我只能通过手动获取价差,然后使用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();
我会把这个贴在这里,因为它可能对某些人有用。如果您看到了这一点,并且找到了更好/更干净的解决方法,我希望看到:-)。