根据订单备注更改 Woocommerce 订单状态

时间:2020-12-31 19:46:33

标签: php wordpress woocommerce

我一直在寻找一种方法来根据订单备注更改我们的 woocommerce 订单状态。我们有一个卡片处理器,可以在订单获得批准时添加订单备注,但它会将订单搁置,因为该卡仅被授权未收费。订单发货后,我们稍后会向卡收费,但我们需要订单进入“处理”状态,以便我们可以将订单导出到我们的系统中,以便我们实际处理订单(我们不通过 woocommerce 进行处理)。< /p>

但是,我找到了这个代码,我想知道是否可以修改它以提取订单备注中的内容,因为我们的处理器会添加该卡是否已获批准。

function mysite_woocommerce_payment_complete( $order_id ) {
    error_log( "Payment has been received for order $order_id" );
}
add_action( 'woocommerce_payment_complete', 'mysite_woocommerce_payment_complete', 10, 1 );

2 个答案:

答案 0 :(得分:1)

这是一个示例,它通过处理切换暂停订单状态。您可以使用它,或者如果需要添加更多条件,请在此处提及或相应更新。谢谢

function switch_hold_status_to_processing ($order_id) {
  $order = new WC_Order( $order_id );
  $order->update_status('processing');
}
add_action('woocommerce_order_status_on-hold', 'switch_hold_status_to_processing');

答案 1 :(得分:1)

您可以使用wc_get_order_notes($args)函数获取特定订单的订单备注。它返回一组订单备注。然后您可以遍历数组以找到您需要的订单备注。然后使用 if 语句验证订单备注的内容并更新状态。

function mysite_woocommerce_payment_complete( $order_id ) {
    $order_notes = wc_get_order_notes([
        'order_id' => $order_id,
     ]);
    foreach ($order_notes as $order_note){
        if ($order_note->content == "Order verified"){
            $order = new WC_Order( $order_id );
            $order->update_status('processing');
            break;
        }
    }
    
}
add_action( 'woocommerce_payment_complete', 'mysite_woocommerce_payment_complete', 10, 1 );