Hướng dẫn tùy chỉnh phần thưởng EXP và Coin với Filters trong Init User Engine

Trong phiên bản 1.2.3 của Init User Engine, hệ thống thưởng EXP và Coin đã được nâng cấp để hỗ trợ filters tùy chỉnh. Nhờ đó, developer có thể dễ dàng thay đổi phần thưởng cho các sự kiện như đăng ký tài khoản, đăng nhập hằng ngày, đăng bài viết, cập nhật hồ sơ, hoặc hoàn tất đơn hàng WooCommerce. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng từng filter với ví dụ cụ thể để tối ưu trải nghiệm người dùng.

Hướng dẫn tùy chỉnh phần thưởng EXP và Coin với Filters trong Init  User Engine

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$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


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...