WordPress特定分类板块文章做成一个API接口提供其他站点调用的实例代码

934次阅读
没有评论

以下是一个示例代码,用于将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接口不被恶意使用以下是示例代码:

[erphpdown]

可以使用以下代码来添加加密字符串访问:

// 注册API接口路由 add_action('rest_api_init', function () { register_rest_route('myplugin/v1', '/posts/(?P<category>\d+)', array( 'methods' => 'GET', 'callback' => 'get_posts_by_category', 'permission_callback' => function () { $encrypted_str = 'YOUR_ENCRYPTED_STRING'; // 你的加密字符串 if (isset($_GET['encrypted_str']) && $_GET['encrypted_str'] == $encrypted_str) { return true; } else { return false; } } )); });

// 定义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); }

[/erphpdown]

在浏览器中访问时,在URL中添加加密字符串参数,例如:

https://www.xxxx.com/wp-json/myplugin/v1/posts/301?encrypted_str=YOUR_ENCRYPTED_STRING

其中,YOUR_ENCRYPTED_STRING需要替换为你的加密字符串。

正文完
 0
评论(没有评论)

觅站网

Posts

Sed cras ornare arcu dui vivamus arcu felis. Cursus euismod quis viverra nibh cras pulvinar mattis nunc.

Melissa Meiers