当订单中包含延期交货项目时,更改订单状态

时间:2017-03-03 11:41:48

标签: php wordpress woocommerce status orders

在WooCommerce中,如果此订单中有反向订购的商品,如何将on-hold订单状态更改为其他商品?

我尝试使用挂钩在woocommerce_order_status_on-hold动作挂钩中的自定义函数,但没有成功。

任何人都可以帮我解决这个问题吗?

感谢。

3 个答案:

答案 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();