Hướng dẫn sử dụng REST API /top trong Init View Count

Plugin Init View Count hỗ trợ endpoint REST API /wp-json/initvico/v1/top để lấy danh sách bài viết được xem nhiều nhất. Đây là công cụ cực kỳ hữu ích cho frontend, SPA, app mobile hoặc các trang WordPress headless. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng endpoint này, tham số hỗ trợ và cách mở rộng qua filter.

Hướng dẫn sử dụng REST API /top trong Init View Count

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, month
  • page: phân trang kết quả. Kết hợp với number để 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ặc full (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ỉ category hay tag
  • API phù hợp để tích hợp AJAX, JS frontend, SPA hoặc hệ thống headless

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...