在 Wordpress rest 中禁止获取草稿 api

Fetching drafts forbidden in Wordpress rest api

我正在使用 wpapi npm 模块与节点应用程序中的 WP rest api 交互。我通过了身份验证,我的用户创建了一些草稿帖子。当我使用相同的凭据转到仪表板时,我也可以 see/edit 草稿帖子。

我正在使用这种方法列出草稿:

wp.posts().auth().param( 'context', 'edit' ).param( 'status', 'draft' )

但是我一直收到这个错误:

{ code: 'rest_invalid_param',
  message: 'Invalid parameter(s): status',
  data: { status: 400, params: { status: 'Status is forbidden.' } } }

Here's where I've commented on the issue and some helpful context.

http://localhost:8000/wp-json/wp/v2/posts?status=draft 的 curl 响应是相同的错误消息,所以我不认为问题出在节点模块上。

我是 wpapi 模块的作者,这个问题最终出现在我们的问题列表中 https://github.com/WP-API/node-wpapi/issues/325 并且代表了我们已在最新版本中修复的错误。

查询草稿时需要进行身份验证,不提供身份验证会导致这个400错误;然而,正如上面链接的问题中所指出的,身份验证适用于一次性请求。为什么是400?发生的事情是,在 wpapi 请求中,我们在对集合进行分页时没有正确转发身份验证凭据,因此对结果第一页的请求将 return 200,然后第二页将 return a 400 因为第二个请求缺少身份验证。我们通过在对集合进行分页时始终传递身份验证凭据来解决此错误,希望这不会绊倒其他任何人。

遇到 400 时的一般故障排除:

  • 您确定已通过身份验证吗? (尝试点击 /users/me)
  • 您的用户是否具备查看草稿帖子所需的能力?

如果您确实发现了这样的错误,我们欢迎您提出问题!