簡體   English   中英

WooCommerce訂單狀態掛鈎未觸發

[英]WooCommerce order status hook not triggering

我在這里使用此小功能來檢測是否已將訂單設置為待處理。 這在付款頁面和付款提供商通知之間發生:

add_action( 'woocommerce_order_status_pending', 'status_pending' );
function status_pending( $related_job ) {
    error_log('Triggered');
}

問題是我沒有收到任何錯誤日志,該錯誤日志向我表明該功能正常工作。 但這變得更加瘋狂。 當我通過儀表板將狀態從完成更新為未決時,將顯示日志。 所以我絕對不知道為什么在結帳過程中它不起作用。 有什么建議或想法可能是什么問題?

這是因為該掛鈎僅在訂單狀態更改時觸發,而不是在訂單創建時觸發,還有另一個掛鈎可用於檢測新訂單,您可以使用訂單ID獲取訂單對象,該對象可用於查找訂單狀態:

add_action( 'woocommerce_new_order', 'prefix_new_wc_order',  1, 1  );
function prefix_new_wc_order( $order_id ) {
    $order = new WC_Order( $order_id );

}

上面的掛鈎僅在結帳過程中觸發,因此在后端創建訂單不會觸發它。

“待定”訂單狀態是訂單創建后客戶進入支付網關之前的默認訂單狀態。

因此,最好的方法是在創建訂單后在付款方式處理之前使用掛鈎:

1)首先嘗試woocommerce_checkout_order_processed操作鈎子(3個參數)

add_action( 'woocommerce_checkout_order_processed', 'order_processed_with_pending_status', 10, 3 );
function order_processed_with_pending_status( $order_id, $posted_data, $order ) {
    error_log('Triggered');
}

2)或者,嘗試woocommerce_checkout_update_order_meta操作鈎子(2個參數)

add_action( 'woocommerce_checkout_update_order_meta', 'order_processed_with_pending_status', 10, 2 );
function order_processed_with_pending_status( $order_id, $data ) {
    error_log('Triggered');
}

兩者都應該工作...

暫無
暫無

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

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