Mục lục
- Tổng quan API
- Endpoint
- Mục đích
- Tham số hỗ trợ
- Ví dụ sử dụng
- Lấy 6 bài viết phổ biến trong tuần
- Lấy bài viết dạng truyen trong taxonomy genre=action,comedy
- Trả về dữ liệu đơn giản (id, title, link)
- Bỏ qua cache (luôn query lại)
- Kết quả trả về
- Mở rộng API bằng filter
- 1. init_plugin_suite_view_count_api_top_args
- 2. init_plugin_suite_view_count_api_top_item
- 3. init_plugin_suite_view_count_api_top_cache_time
- Lưu ý
Tổng quan API
Endpoint
GET /wp-json/initvico/v1/top
Mục đích
Trả về danh sách các bài viết có lượt xem cao nhất theo khoảng thời gian, taxonomy, post type, v.v.
Tham số hỗ trợ
range: Khoảng thời gian thống kê. Giá trị:total,day,week,monthpage: phân trang kết quả. Kết hợp vớinumberđể lấy các trang tiếp theo (ví dụ:page=2)number: Số lượng bài viết cần trả về (mặc định: 5)post_type: Kiểu post cần truy vấn (mặc định:post)fields: Định dạng dữ liệu trả về:minimal(id, title, link) hoặcfull(mặc định)tax: Tên taxonomy bất kỳ (ví dụ:category,genre)terms: Danh sách slug hoặc ID của term, ngăn cách bởi dấu phẩyno_cache: Nếu đặt là1, API sẽ luôn truy vấn lại và bỏ qua cache
Ví dụ sử dụng
Lấy 6 bài viết phổ biến trong tuần
GET /wp-json/initvico/v1/top?range=week&number=6
Lấy bài viết dạng truyen trong taxonomy genre=action,comedy
GET /wp-json/initvico/v1/top?post_type=truyen&tax=genre&terms=action,comedy
Trả về dữ liệu đơn giản (id, title, link)
GET /wp-json/initvico/v1/top?fields=minimal
Bỏ qua cache (luôn query lại)
GET /wp-json/initvico/v1/top?no_cache=1
Kết quả trả về
Mặc định với fields=full, kết quả bao gồm:
[
{
"id": 123,
"title": "Tên bài viết",
"link": "https://example.com/ten-bai-viet",
"excerpt": "...",
"views": 1283,
"thumbnail": "https://example.com/wp-content/uploads/2025/05/anh-dai-dien.jpg",
"post_type": "post",
"type": "Bài viết",
"category": "Tin tức",
"date": "2025-05-18"
}
]
Với fields=minimal, kết quả đơn giản hơn:
[
{
"id": 123,
"title": "Tên bài viết",
"link": "https://example.com/ten-bai-viet"
}
]
Mở rộng API bằng filter
1. init_plugin_suite_view_count_api_top_args
Tùy chỉnh toàn bộ tham số query WP_Query:
add_filter('init_plugin_suite_view_count_api_top_args', function ($args, $request) {
$args['post__not_in'] = [42]; // Loại trừ bài viết có ID 42
return $args;
}, 10, 2);
2. init_plugin_suite_view_count_api_top_item
Tùy chỉnh dữ liệu trả về cho từng bài viết:
add_filter('init_plugin_suite_view_count_api_top_item', function ($item, $post, $request) {
$item['author'] = get_the_author_meta('display_name', $post->post_author);
return $item;
}, 10, 3);
3. init_plugin_suite_view_count_api_top_cache_time
Thay đổi thời gian cache kết quả (mặc định: 5 phút):
add_filter('init_plugin_suite_view_count_api_top_cache_time', function ($seconds, $request) {
return 600; // Cache 10 phút
}, 10, 2);
Lưu ý
- Sử dụng
WP_Queryđể đảm bảo kết quả đúng thứ tự và tương thích cao - Hỗ trợ taxonomy tùy ý – không giới hạn chỉ
categoryhaytag - API phù hợp để tích hợp AJAX, JS frontend, SPA hoặc hệ thống headless
Bình luận