📅  最后修改于: 2023-12-03 15:21:15.262000             🧑  作者: Mango
在 WordPress 中,您可以使用“休息端点”添加可能对您的项目或网站有用的自定义 API 端点。WordPress REST API 入门的一个很好的地方是这个 [Handbook page][rest-api],它提供了有关概念的详细阐述和具体示例。
在已安装应用程序和 WordPress 的情况下,我们将创建一个名为 /wp-json/myplugin/v1/contacts
的休息端点来检索我们的 WordPress 数据库中的联系人。具体来说,我们将使此端点返回所有已发布的“联系人”自定义文章类型的帖子,每个帖子的标题和 META 中的所有内容。
要在 WordPress 中为您的插件注册 REST API 端点,您需要使用如下代码:
<?php
// Register REST API endpoint
add_action('rest_api_init', function () {
register_rest_route('myplugin/v1', '/contacts', array(
'methods' => 'GET',
'callback' => 'myplugin_get_all_contacts'
));
});
// The endpoint handler function
function myplugin_get_all_contacts() {
// Retrieve all "contact" posts
$query = new WP_Query(array(
'post_type' => 'contact',
'post_status' => 'publish',
'posts_per_page' => -1
));
// Prepare data
$contacts = array();
while ($query->have_posts()) {
$query->the_post();
$contact = array(
'title' => get_the_title(),
'meta' => get_post_meta(get_the_ID())
);
$contacts[] = $contact;
}
// Return data
return $contacts;
}
?>
这个 add_action()
提供了一个回调函数,在初始化 REST API 时添加了新的端点。register_rest_route()
带有三个参数:
/wp-json/myplugin/v1/contacts
中,因此我们使用 “myplugin/v1” 命名空间和 “contacts” 端点。在这篇文章中,我们定义了 myplugin_get_all_contacts()
函数,该函数将在端点被请求时执行。此函数使用 WP_Query ( WordPress 中用于查询和检索帖子和其他类型内容的主要工具)查询数据库以检索所有已发布的“联系人”自定义文章类型的内容。然后它准备要返回在 REST API 中的数据,并返回类似于下面的结果:
[
{
"title": "John Doe",
"meta": {
"email": "johndoe@example.com",
"phone": "+1 2345678901"
}
},
{
"title": "Jane Smith",
"meta": {
"email": "janesmith@example.com",
"phone": "+1 0987654321"
}
}
]
请注意,meta 数据是作为复杂对象返回的。要进一步改进此代码并返回一些元数据,请参阅 WordPress REST API [官方文档][rest-api].
[rest-api]: https://developer.wordpress.org/rest-api/