Я создаю конечную точку myurl.com/wp-json/userid/user/, к которой мое приложение для Android будет отправлять запросы, чтобы получить идентификатор пользователя по имени пользователя.
Смотрите код ниже:
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 (‘username’, admin) это становится get_user_by (‘username’, «admin»).
Как я могу быть уверен, что полностью избавился от цитат? Заранее спасибо.
Основывается на документации WP, конечной точке нужна версия userid/v1
а также methods
значение является строкой GET
, Функция обратного вызова Response не нуждается в преобразовании в JSON, автоматический формат WP обнаруживает и конвертирует (Array / Object).
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;
}
Пример URL:
domain.tld/wp-json/userid/v1/user/parsa
Других решений пока нет …