WordPress 端点创建 - 带字符串的回调传递引号

WordPress endpoint creation - Callback with string passes quotes

我正在创建一个端点 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 函数获取 "username" 而不是普通用户名,因此 get_user_by('username', $username) 函数不起作用。

例如,不是采用 get_user_by('username', admin) 它得到 get_user_by('username', "admin").

我怎样才能确保完全去掉引号?提前致谢。

根据 WP 文档,端点需要版本 userid/v1methods 值是一个字符串 GET。响应回调函数不需要转换为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