我正在创建一个端点myurl.com/wp-json/userid/user/,我的Android应用将向该端点发出请求,以便按用户名获取用户ID。
请参见下面的代码:
add_action('rest_api_init', 'get_user_id');
function get_user_id(){
register_rest_route('userid/','user/(?P<string>.+)', array(
'methods' => GET,
'callback' => 'get_this_id',
'args' => [ 'string' ]));
}
function get_this_id($data){
$username = $data['string'];
$myObj = get_user_by('username', $username);
$myJSON = json_encode($myObj);
echo $myJSON;
}
发生的事情是get_this_id函数获取“用户名”而不是普通用户名,因此get_user_by('username',$ username)函数不起作用。
例如,代替使用 get_user_by('用户名',admin),它得到 get_user_by('用户名',“ admin”)。
如何确保完全删除引号?预先感谢。
答案 0 :(得分:1)
根据WP文档,端点需要版本userid/v1
,并且methods
的值是字符串GET
。响应回调函数不需要转换为JSON,WP自动检测格式并转换为(数组/对象)。
https://developer.wordpress.org/reference/functions/register_rest_route/
https://developer.wordpress.org/reference/functions/get_user_by/
add_action('rest_api_init', 'get_user_id');
function get_user_id()
{
register_rest_route('userid/v1', 'user/(?P<string>.+)', array(
'methods' => 'GET',
'callback' => 'get_this_id',
'args' => ['string']
));
}
function get_this_id($data)
{
$username = $data['string'];
$user = get_user_by('login', $username);
return $user;
}
示例网址:
domain.tld/wp-json/userid/v1/user/parsa