我刚刚安装了Wordpress 4.7。该公告中提到的其中之一是它具有REST API。

我的理解是:


不再需要Wordpress REST API插件,因为大概它已经与Wordpress 4.7中的核心合并。
默认情况下启用了Wordpress REST API

但是,我注意到在普通的Wordpress 4.7安装中,似乎没有端点工作(例如http://examples.com/wp-json/wp/v2/posts)。

如何确定新的REST API是否真的被激活?可以使用普通的Wordpress UI启用或禁用REST API,还是应该安装第三方插件来实现?

评论

页面源代码中是否有发现标签? 似乎只能在我的网站上使用。

@Rarst,如果我grep -r“ \ n”;

不在您的源代码中,而是在您的浏览器中站点的页面的HTML源代码中。

@Rarst,是的,我看到了

在浏览器中打开链接能为您带来什么?启用WP_DEBUG了吗?

#1 楼

4.7默认情况下启用它。检查它是否正常的简单方法是访问example.com/wp-json url,您应该在那里找到注册端点的列表。

没有官方选项可以禁用它如(至少有讨论不确定它是否发布),一些核心功能取决于它。

检查它是否不起作用的最明显的事情是您的htaccess规则,您是否有wp-json目录

评论


我在/ var / www / html或其子目录下没有wp-json目录。我似乎没有.htaccess文件(/var/www/html/wp-content/plugins/akismet/.htaccess除外,我应该有一个吗?

–Pep
16 Dec 10'在17:54

@Pep,您使用什么网络服务器?你有固定的链接吗?

–马克·卡普伦
16 Dec 10'在17:58

阿帕奇我完全按照这些教程中的步骤在AWS上安装Wordpress 4.7:docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html和docs.aws.amazon.com/AWSEC2/latest/UserGuide/…

–Pep
16 Dec 10'在18:04



并不熟悉AWS,但是如果您安装了香草wordpress,则应该在安装根目录下具有.htaccess。如果不尝试转到设置>永久链接,请确保您不在普通设置上,保存,然后检查是否生成了htaccess。

–马克·卡普伦
16 Dec 10'在18:12

我终于找到了问题。因为我不知道要使用REST API才能使用Permalink,所以我在初始设置过程中跳过了在/ etc / httpd / conf /的部分中设置AllowOverride All的步骤。 httpd.conf。这就是为什么它忽略了我对.htaccess的更改。现在,有了PLain之外的永久链接,REST API端点即可工作。

–Pep
16 Dec 10'在19:53

#2 楼

我有4.7版本还以为REST API被禁用,但是URL欺骗了我。要查看正确的URL,请查找类似于以下内容的行:

link rel ='https://api.w.org/'href ='http://mysite?rest_route=/'/>。
因此,使用http:// mysite?rest_route = /作为前缀解决了我的问题。例如,要恢复帖子就足以键入:http:// mysite?rest_route = / wp / json

我在文档中找不到需要查询参数的信息。我是唯一的一个吗?

评论


使用wordpress 4.8.x为我工作。不知道为什么未在任何地方进行记录。

–阿尼鲁达(Anirudha)
17年8月31日在11:35

不是唯一的一个。搜索10分钟后,才在您的评论中找到该答案。需要做的:www.example.com?rest_route = / wp / v2 / posts

– Eugene K
18-2-7在3:50



我认为,如果没有启用漂亮的永久链接,就会发生这种情况。从文档中...“在没有固定链接的站点上,将路由作为rest_route参数添加到URL。对于上面的示例,完整的URL将为example.com/?rest_route=/wp/v2/posts / 123“

–吉尔斯·巴特勒
18年7月19日在21:36



这是-> developer.wordpress.org/rest-api/#routes-endpoints

– Deepcell
19年1月3日在16:48

如果要使用PHP内置服务器php -S localhost:1234进行测试,则非常有用。

– Juan Javier Triff Cabanas
20年9月2日,下午2:22

#3 楼

如果REST API无法立即使用,或者在全新安装后并输入

mydomain/wp-json/wp/v2/posts 


,那么您只需激活“永久链接”即可post_name位于:

WP仪表板->设置->永久链接

或者如果您不希望激活永久链接,则只需键入:

mydomain?rest_route=/wp/v2/posts


老兄,我希望WordPress将他们的Rest手册更新为更加用户友好。我喜欢旧版本的docs :)

#4 楼

我看到您已经解决了该问题,但由于它对我也有用,因此保留了我的解决方案。从wp 4.7中的beta15更新到核心api时,我遇到了同样的问题。结果是,我有一些插件使用了不赞成使用的函数register_api_field,根据更改日志中的此注释,我将其更改为register_rest_field:


突破性变化:将register_api_field()重命名为register_rest_field()。

引入了朝后兼容的register_api_field()函数,该函数
调用_doing_it_wrong()。但是,register_api_field()永远不会提交给WordPress核心,因此您应该更新函数调用。