分類
WordPress 最新文章

[WooCommerce] 取得訂單的 user id

使用 WooCommerce 時,可以自己寫一些 hook 來處理訂單,譬如你想在訂單狀態變化的時候自己寫一些程式來處理。

WooCommerce hook

hook 是一種被動的觸發機制,就好像你掛號之後等待叫號一樣。會驅動 hook 的通常都是事件,譬如使用者下單,下單之後就會進入流程,譬如資料檢查、使用者登入、處理商品、建立訂單等等,而這些事件會依照順訊觸發多個 hook,所以你要知道你要處理那一個 hook 是很重要的,另外一個 hook 有可能會被多個事件觸發,帶入的參數也會不一樣,WooCommerce 的 hook 您可以參考 WooCommerce 的官方文件

註冊 hook

把你的程式碼跟 hook 註冊,就像掛號一樣,等 WordPress 系統處理到某一個事件,就會自動執行你的程式碼。

function action_woocommerce_order_status_changed{
    // your code here...
}
add_action( 'woocommerce_order_status_changed', 'action_woocommerce_order_status_changed', 10, 3 );

上面就是一個註冊 hook 的動作,當 WooCommerce 的訂單發生狀態變化的時候,WordPress 就會自動幫我執行 action_woocommerce_order_status_changed 這個函式。

整個 WordPress 中還有很多其他 hook 可以使用。

取的 WooCommerce 訂單 (Order) 的 user_id (使用者 ID)

function action_woocommerce_order_status_changed( $order_id, $old_status, $new_status ) {

	$order = wc_get_order( $order_id );

	$user = $order->get_user();
	$username = $user->user_login;
	$user_id = $order->get_user_id();

};
// add the action
add_action( 'woocommerce_order_status_changed', 'action_woocommerce_order_status_changed', 10, 3 );

使用上述程式碼就可以取得訂單人的 ID 或是帳號名稱。

問題:為什麼 user_id 一直是 0

我在測試的時候有一直抓不到 user_id 的問題,後來才發現是訂單本身的問題,如果你一直抓不到,請檢查一下訂單的 “顧客” 欄位。

訂單資料

顧客欄位不能是 “訪客“。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *