我试图添加一个行项目时,我在后台更新订单,它匹配的状态更新“查询”,但没有项目被添加。
我尝试了get_status
和has_status
,但我不能让它工作。任何想法,为什么这是不工作?
代码:
add_action( 'woocommerce_order_status_changed', 'add_free_products', 20, 4 );
function add_free_products( $order_id, $order ){
if ( ! $order_id )
return;
// Getting an instance of the order object
$order = wc_get_order( $order_id );
if( $order->get_status() == 'enquiry' ) {
$product_id = '155185';
$product = wc_get_product( $product_id );
$order->add_product( $product);
$order->save();
}
}
字符串
2条答案
按热度按时间6tqwzwtp1#
有一些错误和遗漏的东西,使用以下代替:
字符串
代码放在活动子主题(或活动主题)的functions.php文件中。测试并工作。
添加1
您还可以使用自定义Meta数据标记此操作,以避免在多次更改订单状态时添加多个产品,如下所示:
型
代码放在活动子主题(或活动主题)的functions.php文件中。测试并工作。
添加2-检查产品是否已添加到订单 (避免多次添加产品):
型
代码放在活动子主题(或活动主题)的functions.php文件中。测试并工作。
rjjhvcjd2#
对于自定义订单状态,您可以使用
woocommerce_order_status_' . $status_transition['to']
操作钩子,在此将$status_transition[to]
替换为enquiry
所以你得到:
字符串