1. Filter khi xuất bản bài viết
Mặc định: 20 EXP + 5 Coin khi người dùng xuất bản bài viết lần đầu. Có thể tùy chỉnh bằng filter:
add_filter( 'init_plugin_suite_user_engine_publish_post_rewards', function( $rewards, $post ) {
$rewards['exp'] = 50;
$rewards['coin'] = 10;
return $rewards;
}, 10, 2 );
2. Filter khi đăng ký tài khoản
Mặc định: 50 EXP + 20 Coin khi user đăng ký. Ví dụ tùy chỉnh:
add_filter( 'init_plugin_suite_user_engine_user_register_rewards', function( $rewards, $user_id ) {
$rewards['exp'] = 100;
$rewards['coin'] = 50;
return $rewards;
}, 10, 2 );
3. Filter khi cập nhật hồ sơ
Mặc định: 30 EXP + 10 Coin khi user hoàn thiện hồ sơ lần đầu. Ví dụ tùy chỉnh:
add_filter( 'init_plugin_suite_user_engine_update_profile_rewards', function( $rewards, $user_id, $old_user_data ) {
$rewards['exp'] = 60;
$rewards['coin'] = 20;
return $rewards;
}, 10, 3 );
4. Filter khi đăng nhập hằng ngày
Mặc định: 10 EXP + 5 Coin cho lần login đầu tiên trong ngày. Ví dụ tùy chỉnh:
add_filter( 'init_plugin_suite_user_engine_daily_login_rewards', function( $rewards, $user_id, $today ) {
$rewards['exp'] = 25;
$rewards['coin'] = 15;
return $rewards;
}, 10, 3 );
5. Filter khi hoàn tất đơn hàng WooCommerce
Mặc định: phần thưởng được tính dựa trên tổng giá trị đơn hàng (10.000đ = 1 coin, 5.000đ = 1 EXP, với giá trị tối thiểu 1 coin và 5 EXP). Ví dụ override hoàn toàn:
add_filter( 'init_plugin_suite_user_engine_woo_order_rewards', function( $rewards, $user_id, $order, $total ) {
return [
'exp' => 200,
'coin' => 100,
];
}, 10, 4 );
Ví dụ khác: Đổi logic tính thưởng WooCommerce theo Dollar (USD)
Mặc định plugin tính theo VND (10.000đ = 1 Coin, 5.000đ = 1 EXP). Nếu cửa hàng dùng USD, bạn có thể đổi sang quy tắc riêng, ví dụ: $1 = 1 Coin và $1 = 2 EXP (tối thiểu 1 Coin, 5 EXP):
add_filter( 'init_plugin_suite_user_engine_woo_order_rewards', function( $rewards, $user_id, $order, $total ) {
// Chỉ áp dụng khi đơn vị tiền là USD, các currency khác giữ nguyên
if ( $order instanceof WC_Order && strtoupper( $order->get_currency() ) === 'USD' ) {
$total_usd = (float) $total; // Woo trả về tổng đã theo currency cửa hàng
// Quy tắc: $1 = 1 coin, $1 = 2 exp (bạn chỉnh tỉ lệ này theo ý muốn)
$coin = max( 1, (int) floor( $total_usd * 1 ) );
$exp = max( 5, (int) floor( $total_usd * 2 ) );
$rewards = [
'exp' => $exp,
'coin' => $coin,
];
}
return $rewards;
}, 10, 4 );
Mẹo: Nếu bạn muốn áp dụng theo tỷ giá linh hoạt, có thể lấy tỷ giá từ setting của plugin hoặc từ API riêng và nhân vào $total_usd trước khi tính EXP/Coin.
Kết luận
Hệ thống filters mới trong Init User Engine 1.2.3 giúp developer tùy chỉnh EXP và Coin linh hoạt, đồng thời giữ nguyên backward compatibility. Bạn chỉ cần hook filter thay vì chỉnh sửa code gốc, đảm bảo an toàn khi cập nhật plugin.
Bình luận