我正在尝试添加一个$order = wc_create_order();产品的价格由用户定义.将特定产品添加到已经具有默认价格的订单中,该默认价格需要被用户输入的值覆盖.
我尝试使用woocommerce_before_calculate_totals函数,但是没有运气.我认为它不起作用,因为产品被直接添加到添加到购物车的订单中.
我也尝试过使用set_total($value,$deprecated =”),例如
$order = wc_create_order();
$order->set_total($amount); //where the $amount is my custom price.
但订单价值不会改变.还有其他方法可以达到相同目的吗?
解决方法:
我发现自己陷入了同样的困境:我需要使用WooCommerce API创建具有特定产品的自定义,按订单价格的订单.
事实证明WC_Order :: add_product函数接受第三个参数,该参数允许您为’subtotal’和’total’设置自定义值:
https://docs.woocommerce.com/wc-apidocs/source-class-WC_Abstract_Order.html#1109-1160
$order = wc_create_order();
$order->add_product( $product, $quantity, [
'subtotal' => $custom_price_for_this_order, // e.g. 32.95
'total' => $custom_price_for_this_order, // e.g. 32.95
] );
$order->save();
当您在WooCommerce仪表板中查找此订单时,它将显示您的自定义价格,而不是默认产品价格.