在 WordPress REST API 端點中使用 PUT 方法來編輯使用者
在 WordPress 中,REST API 允許開發者通過各種 HTTP 方法與網站數據進行交互。除了使用 GET 方法來檢索數據和 POST 方法來新增資源外,PUT 方法通常用於更新現有的資源。在本節課中,我們將學習如何在自訂的 REST API 端點中增加 PUT 方法的支持,以允許請求者編輯現有的使用者資料。
為 REST API 端點添加 PUT 方法
首先,我們需要通過 register_rest_route
函數為 /user/
端點添加 PUT 方法的支持。這樣當請求者使用 PUT 方法來調用這個端點時,就可以更新指定使用者的資料。
- 範例代碼:
add_action('rest_api_init', 'register_rest_routes'); function register_rest_routes() { // 使用 GET 方法列出使用者 register_rest_route( 'iot/v1', '/user/', array( 'methods' => 'GET', 'callback' => 'list_user_api' ) ); // 使用 POST 方法新增使用者 register_rest_route( 'iot/v1', '/user/', array( 'methods' => 'POST', 'callback' => 'add_user_api' ) ); // 使用 PUT 方法編輯使用者 register_rest_route( 'iot/v1', '/user/', array( 'methods' => 'PUT', 'callback' => 'edit_user_api' ) ); }
代碼解釋:
register_rest_route('iot/v1', '/user/', ...)
:這段代碼為/user/
端點註冊了三個不同的 HTTP 方法,GET 用於列出使用者,POST 用於新增使用者,PUT 用於更新使用者資料。'methods' => 'PUT'
:指定這個端點的 PUT 方法支持,當請求者使用 PUT 方法時,將觸發edit_user_api
回調函數。
實現更新使用者的回調函數
當請求者使用 PUT 方法調用 /user/
端點時,edit_user_api
函數將被執行。這個函數將處理請求中的數據,並通過 wp_update_user
函數來更新使用者資料。
- 範例代碼:
function edit_user_api($request) { // 檢查必要的參數是否存在 if ( !isset($request["user_id"]) || !isset($request["first_name"]) || !isset($request["last_name"]) ) { return new WP_REST_Response( array( 'code' => 400, 'message' => 'Missing Parameter', 'data' => null ), 200 ); } // 安全地提取並過濾參數 $user_id = esc_sql($request['user_id']); $first_name = esc_sql($request['first_name']); $last_name = esc_sql($request['last_name']); // 更新使用者資料 $user_id = wp_update_user( array( 'ID' => $user_id, 'first_name' => $first_name, 'last_name' => $last_name ) ); // 檢查使用者是否成功更新 if (is_wp_error($user_id)) { return new WP_REST_Response( array( 'code' => 500, 'message' => 'User update failed', 'data' => $user_id->get_error_message() ), 500 ); } // 返回成功回應 return new WP_REST_Response( array( 'code' => 200, 'message' => 'success', 'data' => array('user_id' => $user_id) ), 200 ); }
代碼解釋:
!isset($request["user_id"]) ...
:這段代碼檢查請求中是否包含所有必要的參數(user_id
、first_name
、last_name
),如果缺少任何參數,則返回錯誤回應。esc_sql(...)
:用來安全地過濾和處理來自請求的數據,防止 SQL 注入攻擊。wp_update_user(...)
:使用這個 WordPress 核心函數來更新現有的使用者資料,如名字和姓氏。is_wp_error($user_id)
:檢查使用者更新過程中是否發生錯誤,如果發生錯誤,則返回錯誤信息。new WP_REST_Response(...)
:返回 API 請求的回應,其中包含狀態碼、信息和更新後的使用者 ID(如果更新成功)。
測試編輯使用者的 REST API 端點
完成代碼後,您可以通過 Postman 或其他 API 測試工具來測試這個端點。
- 測試步驟:
- 打開 Postman。
- 設置請求方法為 PUT,URL 為
http://yourdomain.com/wp-json/iot/v1/user/
。 - 在請求體中使用
x-www-form-urlencoded
或raw
(JSON) 格式,並提供以下參數:user_id
:要更新的使用者的 ID。first_name
:使用者的新名字。last_name
:使用者的新姓氏。
- 發送請求並檢查回應,您應該會看到成功更新使用者的回應信息。