是否在普通的Wordpress 4.7安装中安装并启用了Wordpress REST API?


29

我刚刚安装了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,还是应该安装第三方插件来实现?


1
页面源代码中是否有发现标签?<link rel='https://api.w.org/' href='https://example.com/wp-json/' />似乎只能在我的网站上使用。
拉斯特

@Rarst,如果我grep -r "<link rel='https://api.w.org/'" .html目录中,它将在文件中返回./wp-includes/rest-api.php具有以下内容的一击:echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
Pep

不在代码中,而是在浏览器中站点的页面的HTML 代码中。
拉斯特

1
@Rarst,是的,我知道<link href="http://example.com/wp-json/" rel="https://api.w.org/">
Pep

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

Answers:


21

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

@Pep,您使用什么网络服务器?你有固定的链接吗?
马克·卡普伦

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

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

6
我终于找到了问题。因为我不知道REST API正常工作需要Permalink,所以我在初始设置过程中跳过AllowOverride All<Directory "/var/www/html">一节中设置的步骤/etc/httpd/conf/httpd.conf。这就是为什么它忽略了我对的更改.htaccess。现在有了除PLain之外的永久链接,REST API端点即可工作。
2016年

11

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

链接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

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

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


1

我看到您已经解决了该问题,但由于我也可以使用,因此请保留我的解决方案。从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核心,因此您应该更新函数调用。


1

如果REST API无法即时使用或在全新安装后并键入后无法正常工作

mydomain/wp-json/wp/v2/posts 

那么您只需以post_name的身份激活“永久链接”即可:

WP控制台->设置->永久链接

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

mydomain?rest_route=/wp/v2/posts

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.