WordPress 是世界上最受欢迎的内容管理系统 (CMS) 之一,但 WordPress 已经发展到不再仅仅支持传统的博客内容——这很大程度上要归功于 WordPress REST API。这个神奇的API就像一座桥梁,连接着WordPress和其他外部Web应用。有了它,WordPress就能和其他应用更好地“聊天”,一起打造出超赞的Web体验。
这个API是怎么工作的呢?它利用了一些叫做“端点”的东西。通过这些端点,我们可以轻松地从WordPress里获取或修改内容,而且都是以JSON这种大家都懂的语言形式。你不需要登录WordPress后台就能做到这些。使用WordPress就变得更加灵活,功能也变得更加强大。
了解 WordPress REST API
WordPress REST API 是一个功能强大的接口,允许使用标准HTTP 方法以编程方式与 WordPress 网站进行交互。其默认功能包括以结构化 JSON 格式访问和操作各种类型的 WordPress 数据,例如帖子、页面、评论、用户和分类法。还可以远程对内容执行 CRUD 操作。
然而,WordPress REST API 的真正价值在于其通过自定义端点的可扩展性。可以创建自定义端点来根据特定需求定制 API,例如集成附加功能、第三方服务或独特的数据结构。这种灵活性能够在 WordPress 之上构建高度定制且功能丰富的应用程序。
如何规划你的自定义 API 端点
规划自定义端点的结构和用途是高效 API 开发的关键。根据特定需求定制的自定义端点需要仔细考虑,以确保最佳功能。战略规划促进可扩展性和适应性,以及面向未来的端点,以适应不断变化的业务需求。
在实施之前规划你的自定义 API 端点支持:
- 端点功能的明确性:规划端点可明确端点的特定功能、其预期数据类型和用法。
- 一致性和开发效率:规划还确保使用端点、响应类型和格式的一致性,从而改善与 API 的交互。此外,了解 API 的用途可以正确实施,从而减少开发时间和错误风险。
- 可扩展性和适应性 :定义端点的需求有助于使其面向未来,以适应不断变化的业务需求和要求,而无需完全重新设计。
- 安全性:正确的端点规划有助于确定访问或操作数据的身份验证需求。通过 API 获取内容有时不需要用户身份验证。尽管如此,对于包含敏感或未经授权的数据的内容,必须定义安全要求并实施授权和访问控制等措施,以帮助确保数据安全。
接下来的实践部分解释如何创建自定义端点,该端点可用于site-domain/wp-json/custom/v2/testimonials
从 WordPress 数据库站点检索客户评价。
发送请求后,端点会返回一个 JSON 对象,其中包含回调函数中定义的有关 WordPress 网站上的评价的信息。
为你的端点创建自定义帖子类型
先创建自定义帖子类型:
1. 从WordPress 管理仪表板 的外观部分导航到主题文件编辑器 。
2.打开主题的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');
此代码创建自定义“推荐”帖子类型 并启用 WordPress REST API 支持 ( 'show_in_rest' => true
)。调用回调add_action hook
函数create_testimonial_type
并在执行期间启动它。可以通过删除或添加标签和参数来自定义标签和参数以满足你的需求。
3.单击更新文件 以保存更改。
刷新仪表盘即可查看已添加到 WordPress 仪表板的推荐选项。
4.单击推荐 > 添加新帖子 创建包含推荐的新帖子。你可以使用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 段的第一部分,应遵循供应商/版本号模式。供应商代表供应商或主题 slug。命名空间有助于区分端点并帮助客户联系您的自定义端点的支持。本教程使用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
。
实现端点的回调函数
创建自定义帖子类型并注册自定义端点后,下一步是编写回调函数。每次访问端点时都会调用此回调函数。
1、get_testimonials
使用以下代码 声明您的回调函数:
function get_testimonials(){
}
2、初始化一个空的推荐数组来存储检索到的 WordPress 推荐数据:
$testimonials = array();
3、设置一个$args
以查询参数命名的数组以进行WP_Query
调用。
$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
),
4、创建该类的实例WP_Query
,该实例接受数组$args
,根据指定的参数执行查询并将 WordPress 查询的结果存储在$query
变量中。
$query = new WP_Query($args)
5、编写条件语句以检查是否有任何推荐帖子。然后,创建一个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*/
6、使用Postman测试你的端点 以验证是否可以访问你的数据。
还可以使用浏览器进行测试。通过site-domain/wp-json/custom/v2/testimonials
在浏览器地址栏中输入 URL 来访问端点。
要让用户能够轻松地访问和与你的WordPress数据库数据进行交互吗?只需要做一件事:注册一个带有回调函数的路由。这个回调函数就像是数据小助手,当用户想要获取或操作数据时,它就会帮忙处理。这样,WordPress API 自定义端点就能顺利实现啦!
暂无评论内容