我已经设置了一个WordPress网站并添加了几个用户。当我直接查看数据库中的wp_usermeta
表时,那里有几条记录,因此用户也有一些元数据。
根据the documentation,在请求用户时应包含meta
,但在我请求/wp-json/wp/v2/users
时,所有meta
字段都是空数组。
我错过了什么?如何通过REST API获取有关用户的元数据?
答案 0 :(得分:3)
根据this part of the docs,我设法找到了一种更简单的方法来实现这一目标。
不确定放置此代码的最佳做法。由于我已经有一个与API相关的插件,我只是在那里添加了代码。
// legend: <type>, <meta_key>, <config>
register_meta('user', 'nickname', array(
"type" => "string",
"show_in_rest" => true // this is the key part
));
现在我只需要找出我需要的具体密钥:)
答案 1 :(得分:1)
这不是我的,成立于: 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