在 WordPress REST API 端點中使用 DELETE 方法來刪除使用者
在 WordPress 中,REST API 為開發者提供了多種與網站資源進行互動的方式。除了常見的 GET、POST、PUT 方法外,DELETE 方法通常用於刪除現有的資源。在本節課中,我們將學習如何在自訂的 REST API 端點中增加 DELETE 方法的支持,以允許請求者刪除指定的使用者。
為 REST API 端點添加 DELETE 方法
我們將通過 register_rest_route
函數為 /user/
端點添加 DELETE 方法的支持。這樣當請求者使用 DELETE 方法來調用這個端點時,就可以刪除指定的使用者。
- 範例代碼:
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' ) ); // 使用 DELETE 方法刪除使用者 register_rest_route( 'iot/v1', '/user/', array( 'methods' => 'DELETE', 'callback' => 'delete_user_api' ) ); }
代碼解釋:
register_rest_route('iot/v1', '/user/', ...)
:這段代碼為/user/
端點註冊了四個不同的 HTTP 方法,GET 用於列出使用者,POST 用於新增使用者,PUT 用於更新使用者資料,DELETE 用於刪除使用者。'methods' => 'DELETE'
:指定這個端點的 DELETE 方法支持,當請求者使用 DELETE 方法時,將觸發delete_user_api
回調函數。
實現刪除使用者的回調函數
當請求者使用 DELETE 方法調用 /user/
端點時,delete_user_api
函數將被執行。這個函數將處理請求中的數據,並通過 wp_delete_user
函數來刪除指定的使用者。
- 範例代碼:
function delete_user_api($request) { // 檢查必要的參數是否存在 if (!isset($request["id"])) { return new WP_REST_Response( array( 'code' => 400, 'message' => 'Missing Parameter', 'data' => null ), 200 ); } // 安全地提取並過濾參數 $user_id = esc_sql($request['id']); // 刪除使用者 require_once(ABSPATH . 'wp-admin/includes/user.php'); $result = wp_delete_user($user_id); // 檢查使用者是否成功刪除 if (!$result) { return new WP_REST_Response( array( 'code' => 500, 'message' => 'User deletion failed', 'data' => null ), 500 ); } // 返回成功回應 return new WP_REST_Response( array( 'code' => 200, 'message' => 'success', 'data' => null ), 200 ); }
代碼解釋:
!isset($request["id"])
:這段代碼檢查請求中是否包含必需的參數id
,如果缺少此參數,則返回錯誤回應。esc_sql($request['id'])
:用來安全地過濾和處理來自請求的數據,防止 SQL 注入攻擊。require_once(ABSPATH . 'wp-admin/includes/user.php')
:這行代碼確保在使用wp_delete_user
函數之前,已加載必要的 WordPress 核心文件。wp_delete_user($user_id)
:使用這個 WordPress 核心函數來刪除指定的使用者。new WP_REST_Response(...)
:返回 API 請求的回應,其中包含狀態碼、信息和刪除操作的結果。
測試刪除使用者的 REST API 端點
完成代碼後,您可以通過 Postman 或其他 API 測試工具來測試這個端點。
- 測試步驟:
- 打開 Postman。
- 設置請求方法為 DELETE,URL 為
http://yourdomain.com/wp-json/iot/v1/user/
。 - 在請求體中使用
x-www-form-urlencoded
或raw
(JSON) 格式,並提供以下參數:id
:要刪除的使用者的 ID。
- 發送請求並檢查回應,您應該會看到成功刪除使用者的回應信息。