- Tổng quan API
- 1. Endpoint tăng lượt xem
- Tham số cần thiết
- Kết quả trả về
- 2. Endpoint lấy danh sách bài viết phổ biến
- 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
1. Endpoint tăng lượt xem
POST /wp-json/initvico/v1/count
Dùng để tăng số lượt xem cho một bài viết. Thường được gọi từ JavaScript phía frontend.
Tham số cần thiết
post_id: ID bài viết cần tăng lượt xem
Kết quả trả về
{
"post_id": 123,
"total": 103,
"total_formatted": "103",
"total_short": "103",
"day": 5,
"week": 27,
"month": 58
}
Các giá trị day, week, month chỉ xuất hiện nếu được bật trong cài đặt plugin.
2. Endpoint lấy danh sách bài viết phổ biến
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(mặc định),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, cách nhau bằng dấu phẩy (plugin tự nhận biết dựa vào kiểu dữ liệu đầu tiên)no_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"
}
]
Nếu không có ảnh đại diện, trường thumbnail sẽ trả về hình mặc định của plugin.
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