以下是一个示例代码,用于将WordPress中的特定分类下的文章转换成API接口,以便其他站点可以调用:
// 注册API接口路由
add_action('rest_api_init', function () {
register_rest_route('myplugin/v1', '/posts/(?P<category>\d+)', array(
'methods' => 'GET',
'callback' => 'get_posts_by_category',
));
});
// 定义API接口回调函数
function get_posts_by_category($request) {
$category_id = $request->get_param('category');
$posts = get_posts(array(
'category' => $category_id,
'posts_per_page' => -1,
'post_status' => 'publish'
));
$data = array();
foreach ($posts as $post) {
$data[] = array(
'id' => $post->ID,
'title' => $post->post_title,
'content' => $post->post_content,
'date' => $post->post_date,
'permalink' => get_permalink($post->ID)
);
}
return rest_ensure_response($data);
}
在这个示例中,我们将API接口地址设置为https://example.com/wp-json/myplugin/v1/posts/{category}
,其中{category}
是要获取的文章分类ID。如果你想使用其他名称或路径作为API接口地址,可以相应地修改register_rest_route()
函数的第一个参数。
当你访问https://example.com/wp-json/myplugin/v1/posts/{category}
时,WordPress将自动调用get_posts_by_category()
函数,并返回一个JSON格式的文章列表,包括每篇文章的ID、标题、内容、发布时间和永久链接等信息。请确保在使用此API接口时,替换{category}
为要获取的文章分类ID。
拓展功能:
为了添加秘钥验证以保护API接口不被恶意使用以下是示例代码:
在浏览器中访问时,在URL中添加加密字符串参数,例如:
https://www.xxxx.com/wp-json/myplugin/v1/posts/301?encrypted_str=YOUR_ENCRYPTED_STRING
其中,YOUR_ENCRYPTED_STRING需要替换为你的加密字符串。
还没有评论呢,快来抢沙发~