- Các Filter liên quan đến REST API
- 1. init_plugin_suite_view_count_should_count
- 2. init_plugin_suite_view_count_meta_key
- 3. init_plugin_suite_view_count_after_counted
- 4. init_plugin_suite_view_count_api_top_args
- 5. init_plugin_suite_view_count_api_top_item
- 6. init_plugin_suite_view_count_api_top_cache_time
- Các Filter hỗ trợ Shortcode
- 1. init_plugin_suite_view_count_meta_key
- 2. init_plugin_suite_view_count_query_args
- 3. init_plugin_suite_view_count_empty_output
- 4. init_plugin_suite_view_count_view_list_atts
- Lưu ý khi mở rộng
Các Filter liên quan đến REST API
1. init_plugin_suite_view_count_should_count
Quyết định xem lượt xem hiện tại có nên được đếm không. Dùng để loại bỏ các trường hợp đặc biệt như bot, người dùng đã đăng nhập, v.v.
add_filter('init_plugin_suite_view_count_should_count', function ($should_count, $post_id, $request) {
if (is_user_logged_in()) return false; // Không đếm với user đã đăng nhập
return $should_count;
}, 10, 3);
2. init_plugin_suite_view_count_meta_key
Thay thế meta key mặc định _init_view_count dùng để lưu tổng lượt xem.
add_filter('init_plugin_suite_view_count_meta_key', function ($key, $post_id) {
return '_custom_total_views';
}, 10, 2);
3. init_plugin_suite_view_count_after_counted
Thực hiện hành động sau khi lượt xem đã được đếm. Ví dụ: ghi log, gửi webhook, v.v.
add_action('init_plugin_suite_view_count_after_counted', function ($post_id, $updated, $request) {
error_log("Bài viết {$post_id} đã được xem. Tổng lượt: " . $updated['total']);
}, 10, 3);
4. init_plugin_suite_view_count_api_top_args
Tuỳ chỉnh tham số WP_Query trong API /wp-json/init/v1/top.
add_filter('init_plugin_suite_view_count_api_top_args', function ($args, $request) {
$args['meta_query'][] = [
'key' => '_is_featured',
'value' => '1',
'compare' => '='
];
return $args;
}, 10, 2);
5. init_plugin_suite_view_count_api_top_item
Tuỳ chỉnh dữ liệu trả về cho từng bài viết trong API /top.
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);
6. init_plugin_suite_view_count_api_top_cache_time
Thay đổi thời gian cache (tính bằng giây) cho kết quả API /top. Mặc định là 5 phút.
add_filter('init_plugin_suite_view_count_api_top_cache_time', function ($seconds, $request) {
return 600; // Cache trong 10 phút
}, 10, 2);
Các Filter hỗ trợ Shortcode
1. init_plugin_suite_view_count_meta_key
Thay đổi meta key mà shortcode [init_view_list] dùng để lấy lượt xem.
add_filter('init_plugin_suite_view_count_meta_key', function ($key, $atts) {
if ($atts['range'] === 'day') {
return '_init_view_day_count';
}
return $key;
}, 10, 2);
2. init_plugin_suite_view_count_query_args
Tuỳ chỉnh tham số truy vấn WP_Query trong shortcode [init_view_list].
add_filter('init_plugin_suite_view_count_query_args', function ($args, $atts) {
$args['post__not_in'] = [42]; // Loại trừ bài viết có ID 42
return $args;
}, 10, 2);
3. init_plugin_suite_view_count_empty_output
Thay đổi nội dung HTML khi không có bài viết nào trong danh sách.
add_filter('init_plugin_suite_view_count_empty_output', function ($output, $atts) {
return '<p class="no-posts">Chưa có bài nào được xem nhiều.</p>';
}, 10, 2);
4. init_plugin_suite_view_count_view_list_atts
Tuỳ chỉnh toàn bộ thuộc tính sau khi shortcode merge xong, trước khi render.
add_filter('init_plugin_suite_view_count_view_list_atts', function ($atts) {
if (is_page('trang-chu')) {
$atts['number'] = 10;
}
return $atts;
});
Lưu ý khi mở rộng
- Luôn khai báo các filter trong plugin con (mu-plugin) hoặc trong
functions.phpcủa theme. - Kiểm tra kỹ biến đầu vào như
$post_id,$requestđể tránh lỗi không mong muốn. - Cẩn trọng khi thay đổi
meta_keyhoặcquery argsvì ảnh hưởng trực tiếp tới kết quả.
Bình luận