在WooCommerce中,如果此订单中有反向订购的商品,如何将on-hold
订单状态更改为其他商品?
我尝试使用挂钩在woocommerce_order_status_on-hold
动作挂钩中的自定义函数,但没有成功。
任何人都可以帮我解决这个问题吗?
感谢。
答案 0 :(得分:2)
更新 兼容woocommerce 3 +
这是一个隐藏在 woocommerce_thankyou
操作挂钩中的自定义功能,如果此订单具有状态"保持"这将改变订单状态 和如果其中有任何延期交货产品。
您将在所需的新状态slu 更改功能中设置。
这是自定义函数(代码评论很好):
add_action( 'woocommerce_thankyou', 'change_paid_backorders_status', 10, 1 );
function change_paid_backorders_status($order_id) {
if ( ! $order_id )
return;
// HERE set your new status SLUG for paid back orders <== <== <== <== <== <== <==
$new_status = 'completed';
// Get a an instance of order object
$order = wc_get_order( $order_id );
// ONLY for "on-hold" ORDERS Status
if ( ! $order->has_status('on-hold') )
return;
// Iterating through each item in the order
foreach ( $order->get_items() as $item ) {
// Get a an instance of product object related to the order item
product = version_compare( WC_VERSION, '3.0', '<' ) ? wc_get_product($item['product_id']); : $item->get_product();
// Check if the product is on backorder
if( $product->is_on_backorder() ){
// Change this order status
$order->update_status($new_status);
break; // Stop the loop
}
}
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
代码经过测试并有效。
答案 1 :(得分:0)
eb deploy --profile qa myapp-env-qa
请尝试此代码段
答案 2 :(得分:0)
编辑代码错误// //获取与订单商品相关的产品对象实例
$product = version_compare( WC_VERSION, '3.0', '<' ) ? wc_get_product($item['product_id']) : $item->get_product();