繁体   English   中英

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

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

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

我需要的是能够使用wp.api.mytools.method.get_current_user类的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();
}

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同步集合和模型,您无需执行任何操作。

总体而言,是的,这是可能的。

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

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

希望这有助于澄清

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM