如何使用 Javascript 库将 WP REST API 与自定义端点一起使用?

How to use the WP REST API with a custom endpoint using the Javascript library?

我有一个自定义端点,它只做 return 一个测试字符串。我可以通过导航到 mydomain.com/wp-json/mytools/v1/method/get_user_data 到达那个端点,它正确地 return 是我的测试字符串,但是,我希望能够使用 Javascript 到达那个端点,而且,我读到wp-api 自动处理身份验证,因此我应该能够使用此方法获得当前登录的用户。

我需要的是能够使用 wp.api.mytools.method.get_current_user 之类的东西并获取当前登录用户的信息。这可能吗?

这是我创建端点的方式:

    register_rest_route( 'mytools/v1', '/method/(?P<method>[\w]+)', array(
        'methods' => 'GET',
        'callback' => 'invoke_method',
    ));

这是 invoke_method 函数:

function invoke_method( WP_REST_Request $request ) {
    return wp_get_current_user();
}

总的来说,是的,这是可能的。

具体来说,如果 wp-api 如果您指的是 node-wpapi JS library,那么是的,它确实处理身份验证。否则,您将需要使用 Cookie、Nonce、Basic-Auth 或 JWT 自己实施身份验证。

对于第二部分,绝对可以使用wp.api.mytools.method.get_current_user之类的东西来获取信息。您需要的是一个客户端库 (node-wpapi),并将其扩展为包含您的 类 和函数,例如 mytoolsmethod

希望这有助于澄清

此功能已由 WordPress 在 WP_REST 端点'.../wp-json/wp/v2/users/me 上实现。除了登录 cookie 之外,WP REST 身份验证还需要一个由查询参数“_wpnonce”指定的随机数。此随机数的值是通过调用 wp_create_nonce( 'wp_rest' ) 生成的。一个普通的 WordPress 前端页面将包含脚本 .../wp-includes/js/api-request.js。此脚本将定义一个全局 wpApiSettings.nonce,它将包含此随机数,因此您可以使用请求 '.../wp-json/wp/v2/users/me?_wpnonce=' + wpApiSettings.nonce。所以,你可以使用 jQuery.get().

jQuery.get(
    '.../wp-json/wp/v2/users/me?_wpnonce=' + wpApiSettings.nonce,
    function( response ) {
        var userData = JSON.parse( response );
    ) }
);

如果您只想获取当前用户,我认为您不需要 Backbone.js。 Backbone.js 将使用 CRUD 同步集合和模型,而您没有执行任何操作。