簡體   English   中英

根據訂單備注更改 Woocommerce 訂單狀態

[英]Changing Woocommerce Order Status based on order notes

我一直在尋找一種方法來根據訂單備注更改我們的 woocommerce 訂單狀態。 我們有一個卡處理器,它會在訂單獲得批准時添加訂單備注,但它會暫停訂單,因為卡只被授權而不被收費。 一旦訂單發貨,我們稍后會向卡收費,但我們需要將 go 的訂單進行“處理”,以便我們可以將訂單導出到我們的系統中,以便我們可以實際處理訂單(我們不通過 woocommerce 處理)。

但是我找到了這段代碼,我想知道是否可以修改它以提取訂單說明中的內容,因為我們的處理器添加了卡是否已被批准。

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 );

這是一個通過處理打開暫停訂單狀態的示例。 您可以使用它,或者如果需要添加更多條件,請在此處提及或相應更新。 謝謝

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');

您可以使用wc_get_order_notes($args) function 來獲取特定訂單的訂單備注。 它返回一個訂單注釋數組。 然后您可以遍歷數組以找到您需要的訂單注釋。 然后使用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 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM