- Filter mới (v1.15)
- 1. init_plugin_suite_view_count_engagement_meta_keys
- 2. init_plugin_suite_view_count_trending_post_types
- 3. init_plugin_suite_view_count_trending_component_weights
- 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
- 7. init_plugin_suite_view_count_top_post_types
- Các Filter hỗ trợ Shortcode
- 1. init_plugin_suite_view_count_query_args
- 2. init_plugin_suite_view_count_empty_output
- 3. init_plugin_suite_view_count_view_list_atts
- 4. init_plugin_suite_view_count_default_shortcode
- 5. init_plugin_suite_view_count_auto_insert_enabled
- Lưu ý khi mở rộng
Filter mới (v1.15)
1. init_plugin_suite_view_count_engagement_meta_keys
Change the meta keys used to retrieve like and share counts when calculating engagement quality.
Applies to: Engagement algorithm
Params: array $meta_keys (likes, shares), int $post_id
add_filter('init_plugin_suite_view_count_engagement_meta_keys', function ($meta_keys, $post_id) {
// Ví dụ: đổi sang meta key tuỳ chỉnh của bạn
return [
'likes' => '_my_like_count',
'shares' => '_my_share_count',
];
}, 10, 2);
2. init_plugin_suite_view_count_trending_post_types
Override the list of post types used by the Trending cron calculation.
Applies to: Cron Trending
Params: array $post_types
add_filter('init_plugin_suite_view_count_trending_post_types', function ($post_types) {
// Chỉ tính Trending cho post type "manga"
return ['manga'];
}, 10, 1);
3. init_plugin_suite_view_count_trending_component_weights
Adjust weights for Trending score components.
Applies to: Trending algorithm
Params: array $weights (velocity, engagement, freshness, momentum)
add_filter('init_plugin_suite_view_count_trending_component_weights', function ($weights) {
// Tăng ảnh hưởng tốc độ (velocity), giảm độ tươi (freshness)
$weights['velocity'] = 0.45;
$weights['engagement'] = 0.30;
$weights['freshness'] = 0.10;
$weights['momentum'] = 0.15;
return $weights;
}, 10, 1);
Các Filter liên quan đến REST API
Dưới đây là các hook và filter giúp bạn tuỳ biến hành vi đếm lượt xem, xử lý API và dữ liệu trả về.
1. init_plugin_suite_view_count_should_count
Xác định có nên đếm view hay không. Dùng để loại trừ bot, người đã đăng nhập, admin, v.v.
add_filter('init_plugin_suite_view_count_should_count', function ($should_count, $post_id, $request) {
// Không đếm view nếu người dùng đã đăng nhập
if (is_user_logged_in()) return false;
return $should_count;
}, 10, 3);
2. init_plugin_suite_view_count_meta_key
Tuỳ chỉnh meta key lưu lượt xem (total/day/week/month). Áp dụng cho cả REST API và shortcode.
add_filter('init_plugin_suite_view_count_meta_key', function ($key, $post_id = null) {
// Nếu là tổng lượt xem, dùng meta key khác
if ($key === '_init_view_count') {
return '_true_read_count';
}
return $key; // Giữ nguyên nếu là lượt xem theo ngày / tuần / tháng
}, 10, 2);
3. init_plugin_suite_view_count_after_counted
Hook chạy sau khi đếm lượt xem thành công.
add_action('init_plugin_suite_view_count_after_counted', function ($post_id, $updated, $request) {
// Ghi log mỗi khi có lượt xem mới
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 truy vấn WP_Query trong API /top.
add_filter('init_plugin_suite_view_count_api_top_args', function ($args, $request) {
// Lọc chỉ các bài có meta _is_featured = 1
$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ề của mỗi bài trong API /top.
add_filter('init_plugin_suite_view_count_api_top_item', function ($item, $post, $request) {
// Thêm tên tác giả vào dữ liệu trả về
$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
Tuỳ chỉnh thời gian cache (giây) cho API /top. Mặc định: 300s (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);
7. init_plugin_suite_view_count_top_post_types
Tuỳ chỉnh danh sách post_type được sử dụng trong API /top. Mặc định là ['post', 'page'].
add_filter('init_plugin_suite_view_count_top_post_types', function ($post_types, $request) {
// Chỉ lấy các bài thuộc post type "manga"
return ['manga'];
}, 10, 2);
Các Filter hỗ trợ Shortcode
1. init_plugin_suite_view_count_query_args
Tuỳ chỉnh tham số WP_Query khi render shortcode [init_view_list].
add_filter('init_plugin_suite_view_count_query_args', function ($args, $atts) {
// Loại trừ bài viết có ID 42 khỏi danh sách
$args['post__not_in'] = [42];
return $args;
}, 10, 2);
2. init_plugin_suite_view_count_empty_output
Tuỳ chỉnh nội dung hiển thị khi không có bài viết nào phù hợp.
add_filter('init_plugin_suite_view_count_empty_output', function ($output, $atts) {
// Custom HTML khi không có kết quả
return '<p class="no-posts">Chưa có bài nào được xem nhiều.</p>';
}, 10, 2);
3. init_plugin_suite_view_count_view_list_atts
Tuỳ chỉnh toàn bộ $atts sau khi shortcode xử lý xong các giá trị mặc định.
add_filter('init_plugin_suite_view_count_view_list_atts', function ($atts) {
// Tăng số lượng hiển thị lên 10 nếu đang ở trang chủ
if (is_page('trang-chu')) {
$atts['number'] = 10;
}
return $atts;
});
4. init_plugin_suite_view_count_default_shortcode
Tuỳ chỉnh nội dung của shortcode được tự động chèn vào bài viết (nếu bật auto insert).
add_filter('init_plugin_suite_view_count_default_shortcode', function ($shortcode) {
// Sử dụng shortcode đơn giản chỉ hiển thị số view
return '[init_view_count format="raw"]';
});
5. init_plugin_suite_view_count_auto_insert_enabled
Kiểm soát việc bật/tắt auto insert theo post type hoặc vị trí chèn (before/after).
add_filter('init_plugin_suite_view_count_auto_insert_enabled', function ($enabled, $position, $post_type) {
// Vô hiệu hoá auto insert ở post type "page"
if ($post_type === 'page') {
return false;
}
return $enabled;
}, 10, 3);
Lưu ý khi mở rộng
- Nên khai báo các filter trong plugin con hoặc
functions.phpcủa theme. - Luôn kiểm tra kỹ biến đầu vào như
$post_idhoặc$requestđể tránh lỗi hoặc truy cập sai dữ liệu. - Cẩn trọng khi thay đổi
meta_keyhoặcquery argsvì có thể ảnh hưởng tới dữ liệu thống kê và hiển thị.
Bình luận