WordPress 是世界上最流行的内容管理系统(CMS)之一,可以帮助大小企业建立和创建各种形式的网站内容。但是,WordPress已经不仅仅支持传统的博客内容,这在很大程度上要归功于WordPress REST API。
WordPress REST API 将 WordPress 和其他外部网络应用程序连接起来。它为更方便的交流提供了便利,并帮助您构建与内容管理系统平台无缝集成的身临其境、引人入胜的网络体验。
该 API 使用端点以 JSON 对象的形式检索和操作 WordPress 内容。有了这些端点,您就可以远程创建、读取、更新和删除(CRUD)WordPress 内容,而无需登录 WordPress 管理后台,从而提高了灵活性并扩展了 WordPress 核心功能以外的功能。
本指南将探讨什么是 WordPress REST API、它的好处、它如何扩展 WordPress 的基本功能,以及如何创建、注册和访问自定义端点。
前提条件
要学习本教程,您需要:
- 了解 REST API
- 已设置好的 WordPress 网站
- 使用 WordPress 和 PHP 的知识
了解 WordPress REST API
WordPress REST API 是一个功能强大的接口,允许您使用标准 HTTP 方法与 WordPress 网站进行编程交互。
它的默认功能包括以结构化的JSON格式访问和操作各种类型的WordPress数据,如、页面、评论、用户和分类法。您还可以远程对内容执行 CRUD 操作。
不过,WordPress REST API的真正价值在于其通过自定义端点实现的可扩展性。您可以创建自定义端点来定制 API 以满足特定需求,例如集成附加功能、第三方服务或独特的数据结构。这种灵活性使您能够在 WordPress 的基础上构建高度定制、功能丰富的应用程序。
如何规划自定义 API 端点
规划自定义端点的结构和目的是高效 API 开发的关键。根据您的特定需求量身定制的端点需要仔细考虑,以确保最佳功能。战略规划有助于提高可扩展性和适应性,使端点面向未来,以适应不断变化的业务需求。
在实施前规划自定义应用程序接口端点可提供以下支持:
- 明确端点功能 – 规划端点可明确端点的具体功能、预期数据类型和用途。
- 一致性和开发效率 – 规划还能确保端点使用、响应类型和格式的一致性,从而改善与应用程序接口的交互。此外,了解应用程序接口的目的有助于正确实施,减少开发时间和出错风险。
- 可扩展性和适应性 – 确定端点的需求有助于未来适应不断变化的业务需求和要求,而无需完全重新设计。
- 安全性 – 正确的端点规划有助于确定访问或操作数据是否需要身份验证。通过应用程序接口获取内容有时不需要用户身份验证。不过,对于包含敏感数据或未经授权数据的内容,必须定义安全要求并实施授权和访问控制等措施,以帮助确保数据安全。
接下来的实践部分将介绍如何创建一个自定义端点,从 WordPress 数据库网站检索客户评价,该端点的地址为 site-domain/wp-json/custom/v2/testimonials
。
发送请求后,端点会返回一个 JSON 对象,其中包含回调函数中定义的 WordPress 网站上的推荐信息。
为端点创建自定义类型
首先,您需要创建自定义类型。
- 从 WordPress 管理面板的 “外观” 部分导航到 “主题文件编辑器“。
- 打开主题的 function.php 文件并添加以下代码:
function create_custom_testimonial_type() { register_post_type('testimonials', array( 'labels' => array( 'name' => 'Testimonials', 'singular_name' => 'Testimonial', ), 'public' => true, 'has_archive' => true, 'show_in_rest' => true, // This enables REST API support )); } add_action('init', 'create_custom_testimonial_type');
这段代码创建了一个自定义的 “testimonials” 类型,并启用了 WordPress REST API 支持(
'show_in_rest' => true
)。add_action 钩子调用create_testimonial_type
回调函数,并在执行过程中启动它。
您可以根据自己的需要删除或添加标签和参数。 - 单击更新文件保存更改。
-
创建
custom_testimonial
文章类型。
刷新仪表盘,查看 WordPress 仪表板中添加的 “Testimonials” 选项。新创建的推荐类型: - 点击 Testimonials > 新增文字,创建包含推荐的新帖。您可以使用 Pullquote 区块。根据推荐信的展示方式,也可以使用其他区块。
下面是两个使用 Pullquote 区块创建的推荐范例:
新创建的客户推荐
在 WordPress 中注册自定义端点
注册自定义端点可使其通过REST API使用。这需要使用 register_rest_route
函数,在 rest_api_init 钩子上调用该函数,并提供一个在路由被调用时将被调用的回调方法。
将以下代码粘贴到主题的 function.php 文件中:
add_action( 'rest_api_init', 'register_testimonial_rest_route' ); function register_testimonial_rest_route(){ register_rest_route( 'custom/v2', '/testimonials', array( 'methods' => 'GET', 'callback' => 'get_testimonials', ) ); }
register_rest_route()
包含三个参数:
-
路由命名空间 (
$route_namespace
) – 这是 URL 段的第一部分,应遵循供应商/版本号模式。供应商代表供应商或主题标签。命名空间有助于区分端点,并帮助客户联系有关自定义端点的支持。本教程使用custom/v2
命名空间。 -
基本 URL(
$route
) – 它紧跟命名空间,是映射到方法的 URL。您可以为路由注册多个端点。本教程中使用的是/testimonials
路由,它告诉端点检索推荐信。 -
端点的选项(
$args
) – 这是一个数组,包含调用路由时使用的 HTTP 方法,以及发送请求时端点将调用的回调函数。我们将在下一节详细介绍回调函数。
最后,请注意您的端点地址。端点的格式是 site-address/wp-json/namespace/route
。因此,在本例中,端点将是 https://www.staging.kidspartysanctuary.co.uk/wp-json/custom/v2/testimonials
。
为端点执行回调函数
创建自定义类型并注册自定义端点后,下一步就是编写回调函数。每次访问端点时,都会调用该回调函数。
- 使用下面的代码声明
get_testimonials
回调函数:function get_testimonials(){ }
- 初始化一个空的推荐数组,用于存储检索到的 WordPress 推荐数据:
$testimonials = array();
- 为
WP_Query
调用设置一个名为$args
的数组,其中包含查询参数。$args = array( 'post_type' => 'testimonials', //specifies you want to query the custom post type 'testimonial', 'nopaging' => true, // no pagination, but retrieve all testimonials at once ),
- 创建一个
WP_Query
类实例,该实例接收$args
数组,根据指定参数执行查询,并将 WordPress 查询结果存储在$query
变量中。$query = new WP_Query($args)
- 编写一个条件语句来检查是否有推荐文章。然后,创建一个
while
循环来遍历,并返回推荐的title
和content
。if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); $testimonial_data = array( /*an array that stores the title and content of every post*/ 'title' => get_the_title(), 'content' => get_the_content(), // Add other fields as needed ); $testimonials[] = $testimonial_data; } wp_reset_postdata(); /* restores $post global to the current post to avoid any conflicts in subsequent queries*/ } return rest_ensure_response( $testimonials ); /*ensures response is correctly set as a response object for consistency*/
下面是完整的代码:
function get_testimonials() { $testimonials = array(); $args = array( 'post_type' => 'testimonials', 'nopaging' => true, ); $query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); $testimonial_data = array( 'title' => get_the_title(), 'content' => get_the_content(), // Add other fields as needed ); $testimonials[] = $testimonial_data; } wp_reset_postdata(); } return rest_ensure_response( $testimonials ); }
- 使用 Postman 测试您的端点,验证是否可以访问数据。
Postman 显示成功响应。您也可以使用浏览器进行测试。在浏览器地址栏输入 URLsite-domain/wp-json/custom/v2/testimonials
,访问端点。访问端点时浏览器显示的结果。
小结
本教程介绍了如何实现 WordPress API 自定义端点。要使用户能够访问 WordPress 数据库数据并与之交互,您只需注册实现回调函数的路由。