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

时间:2018-10-15 20:37:38

标签: php json endpoint

我正在创建一个端点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”)

如何确保完全删除引号?预先感谢。

1 个答案:

答案 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