ثبت نام خودکار مهمان هنگام پرداخت در ووکامرس

0

ثبت نام خودکار مهمان هنگام پرداخت در ووکامرس

برای ثبت نام خودکار کاربر مهمان هنگام پرداخت در فروشگاه اینترنتی که با افزونه ووکامرس وردپرس ساخته شده از روش زیر استفاده نمایید.

این کد تنها زمانی که مشتریان هزینه سفارش خود را پرداخت کنند، به طور خودکار یک حساب کاربری در وردپرس ایجاد می کند. مطمئن شوید که علامت «اجازه به مشتریان برای ایجاد حساب در حین پرداخت» را در داشبورد > ووکامرس > تنظیمات > حساب و حریم خصوصی برای درست کار کردن این قطعه برداشته اید.

با انتخاب این گزینه، ووکامرس به صورت پیش‌فرض یک حساب کاربری برای مشتریان ایجاد می‌کند، حتی اگر پرداخت آن‌ها انجام نشود یا در حالت تعلیق باشد.

به طور خاص، این قطعه چند چیز را بررسی می کند. ابتدا بررسی می کند که کاربر وارد نشده است، زیرا اگر وارد شده باشد، واضح است که قبلاً یک حساب کاربری دارد. هنگامی که سفارش ایجاد شد و مشتری به صفحه تشکر رسید، قطعه با نگاه کردن به آدرس ایمیل او وجود کاربر را بررسی می کند. در نهایت وضعیت سفارش را بررسی می کند. اگر وضعیت سفارش روی «در حال پردازش» یا «تکمیل شده» تنظیم شود، در نهایت حساب کاربری ایجاد می‌شود. این دو وضعیت سفارش نشان دهنده یا پرداخت هستند.

/**
 * Snippet Name:	WooCommerce Create User Account After Payment
 */

add_action( 'woocommerce_thankyou', 'ecommercehints_create_user_account_after_payment', 10, 1 );

function ecommercehints_create_user_account_after_payment( $order_id ) {
    // If user is logged in, do nothing because they already have an account
    if( is_user_logged_in() ) return;

    // Get the newly created order
    $order = wc_get_order( $order_id );

    // Get the billing email address
    $order_email = $order->billing_email;

    // Check if there are any users with the billing email as user or email
    $email = email_exists( $order_email );
    $user = username_exists( $order_email );

	// Get the order status (see if the customer has paid)
	$order_status = $order->get_status();

    // Check if the user exists and if the order status is processing or completed (paid)
    if( $user == false && $email == false && $order->has_status( 'processing' ) || $user == false && $email == false && $order->has_status( 'completed' ) ) {
        // Check on category ( multiple categories can be entered, separated by a comma )

            // Random password with 12 chars
            $random_password = wp_generate_password();

            // Firstname
            $first_name = $order->get_billing_first_name();

            // Lastname
            $last_name = $order->get_billing_last_name();

            // Role
            $role = 'customer';

            // Create new user with email as username, newly created password and user role
            $user_id = wp_insert_user(
                array(
                    'user_email' => $order_email,
                    'user_login' => $order_email,
                    'user_pass'  => $random_password,
                    'first_name' => $first_name,
                    'last_name'  => $last_name,
                    'role'       => $role,
                )
            );

            // (Optional) WC guest customer identification
            update_user_meta( $user_id, 'guest', 'yes' );

            // User's billing data
            update_user_meta( $user_id, 'billing_address_1', $order->billing_address_1 );
            update_user_meta( $user_id, 'billing_address_2', $order->billing_address_2 );
            update_user_meta( $user_id, 'billing_city', $order->billing_city );
            update_user_meta( $user_id, 'billing_company', $order->billing_company );
            update_user_meta( $user_id, 'billing_country', $order->billing_country );
			update_user_meta( $user_id, 'billing_state', $order->billing_state );
            update_user_meta( $user_id, 'billing_email', $order->billing_email );
            update_user_meta( $user_id, 'billing_first_name', $order->billing_first_name );
            update_user_meta( $user_id, 'billing_last_name', $order->billing_last_name );
            update_user_meta( $user_id, 'billing_phone', $order->billing_phone );
            update_user_meta( $user_id, 'billing_postcode', $order->billing_postcode );

            // User's shipping data
            update_user_meta( $user_id, 'shipping_address_1', $order->shipping_address_1 );
            update_user_meta( $user_id, 'shipping_address_2', $order->shipping_address_2 );
            update_user_meta( $user_id, 'shipping_city', $order->shipping_city );
            update_user_meta( $user_id, 'shipping_company', $order->shipping_company );
			update_user_meta( $user_id, 'shipping_state', $order->shipping_state );
            update_user_meta( $user_id, 'shipping_country', $order->shipping_country );
            update_user_meta( $user_id, 'shipping_first_name', $order->shipping_first_name );
            update_user_meta( $user_id, 'shipping_last_name', $order->shipping_last_name );
            update_user_meta( $user_id, 'shipping_method', $order->shipping_method );
            update_user_meta( $user_id, 'shipping_postcode', $order->shipping_postcode );

            // Link past orders to this newly created customer
            wc_update_new_customer_past_orders( $user_id );

    }
}

یا از روش زیر کمک بگیرید

ویرایش صفحه پرداخت ووکامرس شخصی سازی صفحه تسویه حساب ووکامرس سوال در مورد وردپرس رفع مشکل وردپرس تنظیمات ووکامرس تنظیمات صفحه تسویه حساب ووکامرس آموزش ووکامرس آموزش وردپرس

ثبت نام در سایت وردپرسی بدون علامت زدن کادر انتخاب «ایجاد حساب کاربری در این سایت»).

راهی وجود دارد که می‌توان تسویه‌حساب‌های مهمان را به پرداخت‌های ثبت‌شده مشتری تبدیل کرد. همچنین، یک تابع WooCommerce منظم برای اضافه کردن انبوه تمام سفارشات مهمان گذشته به یک مشتری جدید (wc_update_new_customer_past_orders) وجود دارد.

البته، «اجازه دادن به مشتریان برای ثبت سفارش بدون حساب» باید در تنظیمات WooCommerce شما فعال باشد، در غیر این صورت شما اجازه پرداخت مهمان را نمی‌دهید و این قطعه نامربوط خواهد بود.

بنابراین، این راه حل است. لذت ببرید!

/**
/**
 * @snippet       Register Guest Users @ WooCommerce Checkout
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 8
 * @community     https://businessbloomer.com/club/
 */
add_action( 'woocommerce_thankyou', 'bbloomer_register_guests', 9999 );
function bbloomer_register_guests( $order_id ) {
$order = wc_get_order( $order_id );
$email = $order->get_billing_email();
if ( ! email_exists( $email ) && ! username_exists( $email ) ) {
$customer_id = wc_create_new_customer( $email, '', '', array(
'first_name' => $order->get_billing_first_name(),
'last_name'  => $order->get_billing_last_name(),
));
if ( is_wp_error( $customer_id ) ) {
throw new Exception( $customer_id->get_error_message() );
}
wc_update_new_customer_past_orders( $customer_id );
wc_set_customer_auth_cookie( $customer_id );
} else {
$user = get_user_by( 'email', $email );
wc_update_new_customer_past_orders( $user->ID );
}
}

ممکن است شما دوست داشته باشید
ارسال یک پاسخ