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

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, 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, ngăn cách bởi dấu phẩy
  • 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"
  }
]

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.