如何通过插件和命令行对REST API进行身份验证

时间:2015-12-17 作者:Luca Reghellin

我想尝试新的RESTAPI,但我不习惯这种情况。基本上,我想使用它通过ajax获得自定义帖子并显示在网站前端(我正在构建一个ajax产品过滤系统)。

我不知道如何从php进行身份验证,以及如何从命令行测试身份验证。

我想我在这里不需要OAuth,对于正式的v2文档,但是文档说我将使用经过身份验证的用户提供的nonce系统(这里没有问题)。显然,作为一个请求帖子的网站脚本,在我的情况下没有人工用户身份验证,那么我如何通过php或js以一种相当安全的方式进行身份验证呢?

2 个回复
最合适的回答,由SO网友:cybmeta 整理而成

获取请求,就像列出帖子一样,不需要身份验证,至少需要获取私有帖子。您的问题是使用的路由/端点不存在。

在WordPress 4.4中,WP REST API基础设施被合并,端点没有合并;它们将被合并到WordPress 4.5中(就像WordPress 4.6一样,端点似乎仍然没有包含在核心中)。你需要define your own endpoints 或者安装插件以使用它提供的默认端点。

例如(未测试,仅写在此处):

add_action( \'rest_api_init\', \'cyb_register_api_endpoints\' );
function cyb_register_api_endpoints() {

    $namespace = \'myplugin/v1\';

    register_rest_route( $namespace, \'/posts/\', array(
        \'methods\' => \'GET\',
        \'callback\' => \'cyb_get_posts\',
    ) );

}

function cyb_get_posts() {

    $args = array(
         // WP_Query arguments
    );

    $posts = new WP_Query( $args );

    $response = new WP_REST_Response( $posts );

    return $response;

}
然后,您可以获得帖子:

https://example.com/myplugin/v1/posts/

SO网友:jgraup

有一个WP-CLI 包裹wp-cli/restful 这将向CLI打开rest端点。

列出自定义帖子类型,如product 作为管理员进行身份验证时,只需:

wp post list --post-type=product --user=admin

相关推荐

创建帖子,包含来自远程API的数据

我需要一些帮助和指导。因此,我正在开发一个网站(自定义主题),目标是从远程API获取数据。我希望能够将数据存储在各个帖子中(一种自定义帖子类型),当有人向远程API添加或删除数据时,它应该会更新网站上的帖子。我使用的API的结构如下:https://pippinsplugins.com/edd-api/products我知道如何从中获取数据并解码JSON等。$url = \'https://pippinsplugins.com/edd-api/products\'; $username