- 1. init_plugin_suite_user_engine_online_minutes
- 2. init_plugin_suite_user_engine_vip_prices
- 3. init_plugin_suite_user_engine_referral_rewards
- 4. init_plugin_suite_user_engine_localized_data
- 5. init_plugin_suite_user_engine_calculated_coin_amount
- 6. init_plugin_suite_user_engine_calculated_exp_amount
- 7. init_plugin_suite_user_engine_exp_required
- 8. init_plugin_suite_user_engine_checkin_milestones
- 9. init_plugin_suite_user_engine_format_inbox
- 10. init_plugin_suite_user_engine_render_level_badge
- 11. init_plugin_suite_user_engine_inbox_insert_data
- 12. init_plugin_suite_user_engine_vip_expire_soon_threshold
- 13. init_plugin_suite_user_engine_body_vip_classes
- Kết luận
1. init_plugin_suite_user_engine_online_minutes
Điều chỉnh số phút người dùng cần online sau khi điểm danh để có thể nhận thưởng.
// Giảm thời gian yêu cầu nếu là admin
add_filter( 'init_plugin_suite_user_engine_online_minutes', function( $minutes, $user_id, $is_vip ) {
if ( user_can( $user_id, 'manage_options' ) ) {
return 3;
}
return $minutes;
}, 10, 3 );
2. init_plugin_suite_user_engine_vip_prices
Thay đổi giá các gói VIP hiển thị ở frontend.
// Tăng gói VIP Lifetime lên 2 triệu
add_filter( 'init_plugin_suite_user_engine_vip_prices', function( $prices ) {
$prices['vip_price_6'] = 2000000;
return $prices;
});
3. init_plugin_suite_user_engine_referral_rewards
Tùy chỉnh phần thưởng referral cho người giới thiệu và người được mời.
// Cho người giới thiệu thêm 200 coin, người được mời thêm 100 exp
add_filter( 'init_plugin_suite_user_engine_referral_rewards', function( $rewards ) {
$rewards['ref_reward_coin'] = 200;
$rewards['ref_new_exp'] = 100;
return $rewards;
});
4. init_plugin_suite_user_engine_localized_data
Thay đổi dữ liệu được gửi đến frontend qua biến InitUserEngineData.
// Thêm tên người dùng vào biến JS
add_filter( 'init_plugin_suite_user_engine_localized_data', function( $data, $user_id ) {
$user = get_userdata( $user_id );
$data['username'] = $user->user_login;
return $data;
}, 10, 2 );
5. init_plugin_suite_user_engine_calculated_coin_amount
Điều chỉnh số coin được cộng trước khi áp dụng.
// Nhân đôi số coin nếu hôm nay là Chủ nhật
add_filter( 'init_plugin_suite_user_engine_calculated_coin_amount', function( $amount, $user_id ) {
if ( date( 'w' ) == 0 ) {
return $amount * 2;
}
return $amount;
}, 10, 2 );
6. init_plugin_suite_user_engine_calculated_exp_amount
Điều chỉnh số EXP được cộng trước khi áp dụng.
// Giảm EXP cho role "contributor"
add_filter( 'init_plugin_suite_user_engine_calculated_exp_amount', function( $exp, $user_id ) {
$user = get_userdata( $user_id );
if ( in_array( 'contributor', $user->roles ) ) {
return $exp * 0.5;
}
return $exp;
}, 10, 2 );
7. init_plugin_suite_user_engine_exp_required
Thay đổi công thức tính EXP cần thiết để lên cấp.
// Mỗi level cần thêm 1000 EXP thay vì 500
add_filter( 'init_plugin_suite_user_engine_exp_required', function( $required, $level ) {
return 1000 + ( $level - 1 ) * 1000;
}, 10, 2 );
8. init_plugin_suite_user_engine_checkin_milestones
Xác định các mốc streak sẽ được thưởng đặc biệt.
// Thêm mốc thưởng vào ngày 3 và ngày 100
add_filter( 'init_plugin_suite_user_engine_checkin_milestones', function( $milestones ) {
$milestones[] = 3;
$milestones[] = 100;
return $milestones;
});
9. init_plugin_suite_user_engine_format_inbox
Tùy chỉnh dữ liệu một tin nhắn inbox trước khi gửi ra REST API.
// Thêm trường "short_title"
add_filter( 'init_plugin_suite_user_engine_format_inbox', function( $formatted, $raw ) {
$formatted['short_title'] = wp_trim_words( $raw['title'], 5 );
return $formatted;
}, 10, 2 );
10. init_plugin_suite_user_engine_render_level_badge
Thay đổi HTML hiển thị badge cấp độ người dùng.
// Thêm icon đằng trước
add_filter( 'init_plugin_suite_user_engine_render_level_badge', function( $html, $level, $rank ) {
return '<span class="iue-icon-star"></span>' . $html;
}, 10, 3 );
11. init_plugin_suite_user_engine_inbox_insert_data
Can thiệp dữ liệu tin nhắn trước khi ghi vào cơ sở dữ liệu.
// Gắn thêm metadata nếu là loại "event"
add_filter( 'init_plugin_suite_user_engine_inbox_insert_data', function( $data, $user_id ) {
if ( $data['type'] === 'event' ) {
$data['metadata'] = maybe_serialize( [ 'from' => 'system' ] );
}
return $data;
}, 10, 2 );
12. init_plugin_suite_user_engine_vip_expire_soon_threshold
Điều chỉnh khoảng thời gian (tính bằng giây) để xác định khi nào VIP được xem là “sắp hết hạn”. Mặc định là 1 ngày (DAY_IN_SECONDS).
// Coi VIP là sắp hết hạn khi còn dưới 3 ngày
add_filter(
'init_plugin_suite_user_engine_vip_expire_soon_threshold',
function( $seconds, $user_id, $expire ) {
return 3 * DAY_IN_SECONDS;
},
10,
3
);
Filter này thường dùng để điều chỉnh chiến lược nhắc gia hạn hoặc ưu đãi sớm cho từng website.
13. init_plugin_suite_user_engine_body_vip_classes
Cho phép thêm, sửa hoặc loại bỏ các class liên quan đến VIP được gắn vào thẻ <body>. Hữu ích khi bạn muốn mở rộng logic hiển thị hoặc tích hợp với theme / plugin khác.
// Thêm class tùy chỉnh khi user từng mua VIP
add_filter(
'init_plugin_suite_user_engine_body_vip_classes',
function( $classes, $user_id, $expire ) {
if ( in_array( 'iue-vip-expired', $classes, true ) ) {
$classes[] = 'iue-vip-ever';
}
return $classes;
},
10,
3
);
Filter này đóng vai trò cầu nối giữa logic VIP và tầng hiển thị (HTML/CSS).
Kết luận
Hệ thống filter trong Init User Engine được thiết kế để dễ dàng mở rộng và tuỳ biến theo nhu cầu. Bạn có thể sử dụng chúng để thay đổi logic phần thưởng, cấu hình VIP, định dạng dữ liệu frontend hoặc tùy biến giao diện mà không cần sửa trực tiếp plugin gốc.
Bình luận