WP API V2返回无效的用户ID

时间:2017-03-25 作者:geeksal

我想在其他网站上显示wordpress博客中的帖子列表,以及作者姓名、标题、日期和描述。因此,我决定使用WP REST API V2。根据WP REST API文档,我通过以下URL示例检索JSON格式的数据http://example.com/wp-json/wp/v2/posts?_embed. 除了作者姓名,我得到了所有的信息。下面是部分JSON

 .........
 ........
 "_embedded": {
      "author": [
        {
          "code": "rest_user_invalid_id",
          "message": "Invalid user ID.",
          "data": {
            "status": 404
          }
        }
      ],
     ........
     ........
如果我尝试访问以下链接,也会出现相同的错误http://example.com/wp-json/wp/v2/users/1. 即使用户存在,我也不理解为什么会发生此错误。它是否处理身份验证?

Note: 我之前修改了WP数据库中的一个字段,以便实际用户名不会显示在URL和帖子中。然而,我认为这一定不会影响JSON输出,因为用户名的另一个别名已经存在并显示在我的博客中。此外,我的博客的相同条目通过wordpress插件显示在另一个wordpress博客上,该插件还显示作者姓名。

请帮助我,我陷入困境,无法找到解决方案。

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

Wordfence阻止用户端点公开。在“设置”中有一个复选框,您可以取消选中该复选框,使其再次在WP Rest API中可见。

SO网友:rtpHarry

我知道op解决了这个问题,但对于来自谷歌的其他用户,我必须这样做:

进入WordFence的“所有选项”页面,在过滤器中搜索“rest”,取消选中“防止通过“/?author=N”扫描、oEmbed API和WordPress rest API发现用户名”选项,进入LiteSpeed缓存并选择“全部清除”,您可能会使用不同的插件进行安全和缓存,但总体思路仍然是:

确保安全插件没有阻止访问,清除缓存

SO网友:TheRealMikeD

如果用户数据确实被Wordfence(或其他安全插件)阻止,并且您希望继续利用该安全功能,那么您可以修改REST API的响应,并只添加您想要使用的字段(这可能会显示比标准API调用公开的数据更少的数据)。本文档介绍了如何修改API响应:https://developer.wordpress.org/rest-api/extending-the-rest-api/modifying-responses/. 为您提供了一个附加选项。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请