我目前正在嘗試創建一個用于創建應用程序的 API 為此,我需要一個自定義端點,該端點只能從已登錄的用戶訪問,目前使用以下代碼完成:register_rest_route( 'wp/v2', 'private/me',array( 'methods' => WP_REST_Server::READABLE, 'callback' => 'get_private'));function get_private($request) { $user = (array) wp_get_current_user(); $user["data"] = (array) $user["data"]; unset($user['data']['user_pass']); // $user = get_user_by('id', 13); if (empty($user)) { return new WP_Error( 'empty_category', 'there is no post in this category', array('status' => 404) ); } $response = new WP_REST_Response($user['data']); $response->set_status(200); return $response;}目前它返回一個沒有'user_pass'的用戶對象然后,當我使用“register_rest_field”函數時,我什么也得不到(如果在任何默認 api 用戶端點上設置,該函數就可以工作register_rest_field('private/me', 'rank_number', array( 'get_callback' => 'get_rank_number', 'update_callback' => null, 'schema' => null ) );function get_rank_number ( $user ) { return (int) get_user_meta($user['id'], 'ck_user_ranking_score_number', true);}問題是,我不知道如何讓路線讀取已注冊休息字段的列表,也不知道是否應該這樣做目前,我正在嘗試通過擴展 WP_REST_Controller 類來實現它,因為它看起來可以工作有人可以幫助我了解 API 的工作原理或應該如何使用它嗎?:/
1 回答

慕少森
TA貢獻2019條經驗 獲得超9個贊
如果有人遇到同樣的問題,wordpress 用戶在他們的論壇上回答了我的帖子,
解決方案: var $wp_rest_additional_fields,我在文檔中找不到任何關于它的內容,但至少 var 確實存在于全局范圍內
因此,使用此代碼一切正常
global $wp_rest_additional_fields;
foreach($wp_rest_additional_fields['private/me'] as $key => $value){
$user_data[$key] = call_user_func($value['get_callback'], $user['data']);
}
- 1 回答
- 0 關注
- 98 瀏覽
添加回答
舉報
0/150
提交
取消