![](/img/trans.png)
[英]how do i get all the menus of wordpress website using wordpress rest api v2?
[英]How do I get WordPress' REST API to include user metadata?
我已經建立了一個WordPress網站並添加了幾個用戶。 當我直接查看數據庫的wp_usermeta
表時,那里有幾條記錄,因此用戶也確實有一些元數據。
根據文檔 ,請求用戶時應包含meta
,但是當我請求/wp-json/wp/v2/users
所有meta
字段均為空數組。
我想念什么? 如何通過REST API獲取有關用戶的元數據?
根據文檔的這一部分,我設法找到了一種更簡單的方法來完成此操作。
不知道將這段代碼放在哪里是最佳實踐。 由於我已經有一個與API相關的插件,因此我只在其中添加了代碼。
// legend: <type>, <meta_key>, <config>
register_meta('user', 'nickname', array(
"type" => "string",
"show_in_rest" => true // this is the key part
));
現在我只需要弄清楚我需要哪些特定鍵:)
這不是我的,它位於: https : //wordpress.stackexchange.com/questions/270154/getting-user-meta-data-from-wp-rest-api
在此處編寫以供將來參考StackOverflow:
查看register_rest_field()以向其余api注冊meta。
add_action( 'rest_api_init', 'adding_user_meta_rest' );
function adding_user_meta_rest() {
register_rest_field( 'user',
'collapsed_widgets',
array(
'get_callback' => 'user_meta_callback',
'update_callback' => null,
'schema' => null,
)
);
}
然后將get_user_meta位放入回調中。
function user_meta_callback( $user, $field_name, $request) {
return get_user_meta( $user[ 'id' ], $field_name, true );
}
WP_REST_Meta_Fields類也可以提供更多有用的見解。
更新:關於注冊自定義路線
一個快速而骯臟的部分示例。 從擺在我面前的一些東西中湊了出來,但這不是一個可行的例子。
在您閱讀文檔時可能會有所幫助。 遵循第一個register_rest_route (下面是GET方法的回調my_get_callback)與回調方法對WP_Rest_Request類的使用之間的連接 。 應該有助於將步驟聯系起來。 我在評論中提到的文檔將進入其他args,params等,當然還會涉及Permissions_callback內容。
希望能幫助到你。
class My_Extend_Rest extends WP_REST_Controller {
public function __construct() {
add_action( 'rest_api_init', array( $this, 'register_routes' ) );
}//end __construct
public function register_routes() {
$version = '1';
$namespace = 'my-fancy-namespace/v' . $version;
$base = 'my-route-base';
// so, site.com/wp-json/my-fancy-namespace/v2/my-route-base/
register_rest_route( $namespace, '/'. $base, array(
array(
'methods' => 'GET',
'callback' => array( $this, 'my_get_callback' ),
'permission_callback' => array( $this, 'key_permissions_check' ),
),
array(
'methods' => 'POST',
'callback' => array( $this, 'my_post_callback' ),
'permission_callback' => array( $this, 'key_permissions_check' ),
),)
);
$base2 = 'my-second-base';
// so, site.com/wp-json/my-fancy-namespace/v2/my-second-base/
register_rest_route( $namespace, '/'. $base2, array(
array(
'methods' => 'GET',
'callback' => array( $this, 'my_get_callback_two' ),
'permission_callback' => array( $this, 'key_permissions_check' ),
),
array(
'methods' => 'POST',
'callback' => array( $this, 'my_post_callback_two' ),
'permission_callback' => array( $this, 'key_permissions_check' ),
),)
);
}//register_routes
public function key_permissions_check() {
//do permissions check stuff
}
public function my_get_callback( WP_REST_Request $request ) {
//do stuff with $request
//see the methods mentioned in the comment
}//end
}//end class
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.