WordPress REST API 基础完整指南

WordPress REST API 正在更改 WordPress。你可能没有注意到,因为其中很多都在幕后,但是 REST API 的含义对 WordPress 的未来产生了巨大的影响,无论是就其代码库和用途而言。

如果你没有使用过 WordPress REST API,你可能想知道它是什么。因此,让我们先来看看 REST API 是什么。

什么是 WordPress REST API?

WordPress REST API 是一个接口,开发人员可以使用它从 WordPress 安装本身之外访问 WordPress。你使用 JavaScript 访问它,这意味着它可用于创建交互式网站和应用程序。

REST 代表 Representational State Transfer,API 代表应用程序编程接口。让我们来看看它们各自的含义。

什么是应用程序编程接口 (API)?

应用程序编程接口或 API定义为:

“客户端和服务器之间的接口或通信协议,旨在简化客户端软件的构建。”

如果你不熟悉 API,那可能不会有太大帮助。更简单地说,API 是一组代码,允许一个系统与另一个系统交互(或“接口”)。如果你曾经将 Google 地图添加到你的 WordPress 站点,那么你已经使用了 Google 的 Maps API,它允许你的 WordPress 站点与 Google Maps 交互。

窗体底端

这些系统不需要完全分开。WordPress 已经有多个API,用于插件、设置和简码等。插件和主题开发人员可以使用这些来与 WordPress 核心交互并使事情发生(例如创建短代码和向 WordPress 管理员添加设置屏幕)。

REST API 的不同之处在于它允许 WordPress 安装本身之外的系统与 WordPress 交互,这就是 REST 部分的用武之地。

什么是表征状态转移 (REST)?

Representational State Transfer (REST) 提供了 Web 系统可以用来相互交互的标准。如果没有 REST,两个系统将无法相互理解,从而来回发送数据。

一个应用程序要成为RESTful,它必须符合五个原则:

  1. 统一的界面。用于访问系统中资源的 URL 必须是统一的、一致的,并且可以通过 GET 等通用方法访问(稍后会详细介绍)。
  2. 客户端服务器。客户端应用程序和服务器应用程序必须是分开的,因此它们可以相互独立地开发。如果服务器端技术(即 WordPress)发生变化,服务器端应用程序(例如应用程序)必须仍然能够通过相同的简单方法访问它。
  3. 无国籍。使用 API 发出新请求时,服务器不会更改状态。它不存储已发出的请求。
  4. 可缓存。所有资源都必须是可缓存的,以提高速度并符合 Web 标准。缓存可以在服务器端或客户端实现。
  5. 分层系统。RESTful 系统允许你使用多个层来访问它,并在需要时将数据存储在中间服务器中。服务器无法判断最终客户端是否直接连接到它。

所有这些限制都与网页和应用程序相关,并控制应用程序与 API 交互的方式。

这对 WordPress 意味着什么?

将 REST 和 API 放在一起意味着 WordPress REST API 是一组代码,旨在使其他系统能够与 WordPress 交互,并且它的构建方式可以确保这些系统能够相互理解。

这意味着第三方网站或移动应用程序可以访问你的WordPress 数据库,从中获取数据,并向其中添加数据。

不过,这有很多含义和用途。

了解 WordPress REST API

WordPress REST API 是为了响应网站和应用程序开发方式的变化以及更广泛地开放 WordPress 的需要而开发的。

WordPress REST API 的背景

WordPress REST API2016 年 12 月作为 4.7 版核心的一部分发布,但在此之前它作为插件存在。

它旨在支持基于 WordPress 构建的一系列应用程序,并将 WordPress 从内容管理系统转变为应用程序平台。

它被WordPress.com广泛使用,其基于 JavaScript 的界面使用 REST API 与 WordPress 数据库进行交互。Gutenberg 编辑界面也使用它,该界面在 2019 年成为核心的一部分。

REST API 拓宽了 WordPress 可用于的应用程序范围。虽然内容管理系统擅长运行复杂的网站,但应用程序平台也可用于支持基于 Web 的单页应用程序或 SPA(如果你曾经使用过Google 文档,那么你已经使用过其中之一)。

在这些中,当用户采取行动时,内容会被刷新,而不是加载新页面。因为它使用JavaScript而不是 PHP,所以它可以在用户的​浏览器中进行操作,而无需不断地向服务器发送请求。

对 WordPress 用户和开发人员的影响

如果你是使用 WordPress 的用户和/或开发人员,则 REST API 有很多含义。

对于用户,这些包括:

  • 对界面的更改,包括古腾堡编辑器。
  • 对 WordPress 移动应用程序的更改和改进。
  • 随着时间的推移,自托管的 WordPress 管理屏幕看起来更像WordPress.com屏幕。

对于开发人员来说,有更广泛的含义和可能性:

  • 使用 REST API 创建 SPA 的能力,从 WordPress 中提取数据,但看起来与 WordPress 非常不同。
  • 将 WordPress 与其他前端技术和系统集成的能力。
  • 如果你是不编写 PHP的前端开发人员,则可以使用 WordPress 进行开发。
  • 对于 PHP 开发人员,越来越需要扩展你的技能以包括 JavaScript。
  • 特定更改,例如需要在页面和帖子编辑屏幕中构建Gutenberg blocks 而不是meta boxes。

随着时间的推移,WordPress REST API 将意味着更多的 WordPress 核心将使用 JavaScript 而不是 PHP 编写。如果你是 WordPress 开发人员,这意味着你需要学习 JavaScript。

如何访问 WordPress REST API

你如何访问 WordPress REST API?

要访问 WP-REST API,你需要通过命令行访问你的站点。对于 WordPress,这称为WP-CLI。你无需通过管理屏幕或直接访问你网站上的代码来执行任何操作。

通过 WP-CLI 访问 WP-REST

WP-CLI 是 WordPress 命令行界面。它允许你通过计算机上的命令行界面 (CLI) 访问和使用 WordPress。WP-CLI 预装了所有 Kinsta 托管计划。

要访问 CLI,请在 Mac 或 Linux 中打开终端,或在 Windows 中打开命令提示符。

Mac 上的终端

要访问远程站点,你需要SSH 到你的服务器以通过 WP-CLI 访问它(无法通过 SSH 连接?了解如何修复 SSH “连接被拒绝”错误)。

要访问本地站点,你只需从命令行使用正确的目录结构。在实际站点上试用 REST API 之前,最好先在本地测试站点上进行试验。

你需要专门访问你网站的 REST API,如下所示:

http://yoursite.com/wp-json/wp/v2

然后,你可以在此之后添加元素以访问某些类型的数据,我们稍后会更详细地介绍这些数据。这些元素称为端点。

验证

访问你的网站后,你可能需要通过身份验证。一些端点是公共的,不需要身份验证,而另一些则需要。

你在这里没有登录到你的站点管理员:​​REST API 做的事情有点不同。

为了能够通过 WP-CLI 对你的站点进行身份验证,你需要安装一个身份验证插件。对于开发安装,Basic Auth插件可以完成这项工作并且使用起来很简单。

但是,对于实时站点,你应该使用更强大的身份验证形式,例如JWT 身份验证插件,它使用 JSON Web Token 并且更安全。

然后,你可以使用命令行访问数据并包括身份验证。

下面的示例curl用于测试与 WordPress 的连接。它将输出草稿帖子列表。

curl -X GET --user username:password -i http://yoursite.com/wp-json/wp/v2/posts?status=draft

草稿帖子不是公共信息,因此你需要进行身份验证才能访问它们。但是,如果你正在寻找公开的数据,则不需要身份验证。因此,要检索已发布的帖子列表,你可以使用:

curl -X GET http://yoursite.com/wp-json/wp/v2/posts

这将获取所有已发布的帖子,因为它们是公开的。

WordPress REST API 命令概述

一旦你访问了你的站点并且你知道如何使用身份验证(以及你是否需要),你将需要使用一系列命令中的一个来与你的站点进行交互。

你需要使用的命令是:

  • GET检索资源,例如帖子或其他一些数据。
  • POST向服务器添加资源,例如帖子、附件或其他资源。
  • PUT可用于编辑或更新服务器上已存在的资源。
  • DELETE从服务器中删除资源。小心使用!

让我们依次看看这些。

GET

该GET命令可能是最常用的:它检索数据。下面的示例(你在成功访问你的网站后使用)将获取你网站中所有已发布页面的列表:

GET http://yoursite.com/wp-json/wp/v2/posts/?status=published

请注意,我没有在上面的行中包含你站点的完整路径,因为你已经使用 WP-CLI 访问了该路径。

检索到该数据后,你可以使用它来通知你的下一步。你可以删除其中一篇文章,对其进行编辑或更新。你可以简单地将帖子输出到你的网络应用程序。

假设你想获取最新的帖子。你会用这个:

GET http://yoursite.com/wp-json/wp/v2/posts/?per_page=1

处理帖子时可以使用许多参数。

窗体顶端

窗体底端

POST

用于POST向你的站点添加新数据或资源。

因此,例如,如果你想创建一个帖子,你可以使用以下POST命令开始:

POST http://yoursite.com/wp-json/wp/v2/posts/

这将创建一个新的空草稿帖子。

然后,你可以使用PUT命令对其进行编辑来更新帖子。

使用POST命令,你还可以添加帖子以外的其他资源,包括附件和其他帖子类型。

要将页面添加到你的站点,你可以使用以下内容:

POST http://yoursite.com/wp-json/wp/v2/posts/pages

这将创建一个空页面,就像你创建一个空帖子一样。

PUT

该PUT命令允许你编辑现有资源,包括帖子。

假设你的网站上有许多草稿帖子。你想检查它们并更新一个以使其发布。

你可以从获取所有草稿帖子的列表开始:

POST http://yoursite.com/wp-json/wp/v2/posts/?status="draft"

系统将为你提供所有当前草稿帖子的列表。你可以使用其 ID 更改其中之一的状态:

PUT http://yoursite.com/wp-json/wp/v2/posts/567

这将访问该帖子并允许你对其进行编辑。然后,你可以使用 status 参数更改其状态:

{

"status" = "publish"

}

或者你可以将内容添加到帖子并发布:

{

"status" = "publish"

"content" = "content here"

}

服务器将返回一个200 - OK状态,告诉你 PUT 请求已成功编辑帖子。

删除

该DELETE命令执行你所期望的操作:它删除一个资源。默认情况下,如果你使用它来删除帖子,它会将其放入垃圾箱而不是永久删除。

因此,如果你想将刚刚创建的帖子移动到垃圾箱,你可以使用:

DELETE http://yoursite.com/wp-json/wp/v2/posts/567

但是,如果你想绕过垃圾箱并将其永久删除,则可以使用以下force参数:

DELETE http://yoursite.com/wp-json/wp/v2/posts/567?force=true

这将永久删除帖子,没有撤消选项,因此应谨慎使用。

何时不使用 WordPress REST API

WordPress REST API 并不总是开发网站或应用程序的正确方法。在将其用于开发之前,你应该注意以下几点:

兼容性

如果你的应用程序将在不运行 JavaScript 的设备上使用,或者由可能将其关闭的用户使用,那么如果你使用的是 REST API,它将不会运行。

一个用 PHP 编码的 WordPress 站点将输出 HTML,因此它不会遇到这个问题。不使用 JavaScript 的设备越来越少,但如果你专门为这些设备开发,REST API 将无法工作。

同样,如果你的用户可能会关闭 JavaScript,那么使用 REST API 会导致问题。出于可访问性或安全原因,一些用户在浏览器中关闭了 JavaScript。

可访问性

使用 JavaScript 开发的站点或应用程序并不总是像 HTML 输出那样易于访问。

这主要是因为 JavaScript 用于传递动态内容的方式可能无法很好地与屏幕阅读器一起播放,并且可能会给视力障碍或光敏性癫痫患者带来问题。

使用 REST API 访问你的 WordPress 站点并以可访问的形式输出数据意味着你可以克服这些问题,但在开发站点时检查站点的可访问性是值得的。

搜索引擎优化

频繁刷新的单页应用程序有时会导致SEO 问题。这是因为在首次输出页面时未交付的内容可能不会被搜索引擎索引。

谷歌和其他搜索引擎正在赶上这样一个事实,即现在许多网站都是由 SPA 提供支持的,并且正在适当地对它们进行索引。但是,对你使用 REST API 开发的任何网站进行彻底的SEO 审核确实是值得的。

如何禁用 WordPress REST API

如果你不希望应用程序能够使用 REST API 从你的站点访问数据,你可以禁用它。请记住,任何人都可以访问公共数据,而不仅仅是你。

为此,你可以安装禁用 WP REST API插件。这将为未登录到你站点的任何人禁用 REST API。

禁用 WP REST API 插件

或者,你可以在主题的函数文件中添加一些代码或编写自己的插件。最好编写一个插件,因为这不是特定于主题的功能。

在你的插件中,仅添加两行:

add_filter( 'json_enabled', '__return_false' );

add_filter( 'json_jsonp_enabled', '__return_false' );

这将完全禁用你站点的 REST API。它可能会对你的管理屏幕产生连锁反应,因此请确保在添加后一切正常。

使用 WordPress REST API 的真实应用程序

REST API 为 WordPress 的未来提供了一些令人兴奋的可能性。以下是一些使用 WordPress REST API 创建 SPA 或将 WordPress 链接到其他网站和技术的应用程序和网站示例。

WordPress.com

WordPress.com 界面

WordPress.com 管理屏幕完全使用 REST API 构建,以提供用户与之交互以管理其站点的 SPA。

这使得界面和服务器之间可以进行动态通信,并产生一个用户友好的界面,WordPress.org 很可能会及时模仿。

块编辑器

同样在 WordPress 管理屏幕中,但这次也在自托管 WordPress 中,Gutenberg 块编辑器利用 REST API 与你的数据库通信并创建块。

要使帖子类型与 Gutenberg 编辑器一起使用,它们必须启用 REST API。这意味着,如果你要注册自定义帖子类型并使用 Gutenberg,则需要添加以下行以启用该帖子类型的块编辑器:

"show_in_rest" = true;

Event Espresso

Event Espresso是一个 WordPress 插件,可让用户组织和宣传活动。它利用 REST API,以便用户可以从 WordPress 外部访问数据。这意味着你可以构建移动应用程序或 SPA 来管理你的活动。

概括

WordPress REST API 为 WordPress 用户和开发人员带来了一些令人兴奋的挑战,但也带来了有趣的机会。这是 WordPress 的未来,很可能从根本上改变我们使用 WordPress 开发的方式以及我们使用它的方式。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章