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

ووکامرس : بخش ثبت نام حساب کاربری در تسویه حساب ووکامرس
ووکامرس : بخش ثبت نام حساب کاربری در برگه تسویه حساب

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

اگر تمایل دارید گزینه «می‌خواهید یک حساب کاربری ایجاد کنید» را از برگه تسویه حساب بردارید و همچنین ثبت نام کاربر مهمان را به صورت خودکار انجام دهید، کافی است مراحل زیر را به دقت دنبال کنید.

مرحله اوّل: به بخش پیکربندی ووکامرس رفته و در تب «حفظ حریم خصوصی حساب‌های کاربری» و بخش «ساخت حساب کاربری»، تیک گزینه «به مشتری هنگام پرداخت اجازه ایجاد حساب کاربری دهید» را بردارید.

مرحله دوّم: قطعه کد زیر را به سایت وردپرسی خود اضافه کنید. شما برای انجام این کار کافی است قطعه کد را در functions.php پوسته فرزند یا افزونه Code Snippet قرار دهید. این قطعه کد پس از آنکه سفارش با موفقیت نهایی شود، در برگه تشکر (thankyou)، به طور خودکار برای کاربر با ایمیل وارد شده یک حساب کاربری خواهد ساخت.

ثبت نام خودکار در برگه تسویه حساب ووکامرس با استفاده از ایمیل

/**
 * @snippet       Register Guest Users @ WooCommerce Checkout
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 6
 */
 
add_action( 'woocommerce_thankyou', 'tidaweb_register_guests', 9999 );
 
function tidaweb_register_guests( $order_id )
{
    // Get order info and get customer email for registering
    $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() );
        }

        // Auto set cookie for new user
        wc_update_new_customer_past_orders( $customer_id );
        wc_set_customer_auth_cookie( $customer_id );
    }
    else
    {
        // Auto set cookie for existing user
        $user = get_user_by( 'email', $email );
        wc_update_new_customer_past_orders( $user->ID );
        wc_set_customer_auth_cookie( $user->ID );
    }
}

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

در صورتی که از افزونه دیجیتس (افزونه ثبت نام و ورود با شماره موبایل) استفاده می‌کنید و می‌خواهید ثبت‌‌نام به صورت خودکار انجام شود، نکات زیر را در نظر داشته باشید:

نمایش مجموع فروش براساس استان

نکته اوّل: اگر افزونه دیجیتس را طوری تنظیم کردید که نام کاربری از روی شماره تلفن همراه ساخته می‌شود، لازم است الگوی ساخت حساب کاربری را در ببینید و براساس آن تغییرات را در کد اعمال کنید. در حال حاضر کد زیر براساس کد کشور به همراه + پیاده سازی شده است.

/**
 * @snippet       Register Guest Users @ WooCommerce Checkout By Billing Phone (Digits)
 * @author        Rasool Vahdati
 * @testedwith    WooCommerce 6
 * @updated       2022/10/29 : 1401/08/07
 */

add_action( 'woocommerce_thankyou', 'tidaweb_register_guests_by_phone', 9999 );
 
function tidaweb_register_guests_by_phone( $order_id )
{
    $country_code = "+98"; // default country code
    // Get order info and get customer email for registering
    $order = wc_get_order( $order_id );
    $email = $order->get_billing_email();
    // phone
    $phone_no = substr( $order->get_billing_phone(), 1 );
    $phone = $country_code . $phone_no;
    if ( ! username_exists( $phone ) )
    {
        $customer_id = wp_insert_user([
            'user_login' => $phone,
            'first_name' => $order->get_billing_first_name(),
            'last_name'  => $order->get_billing_last_name(),
            'user_email' => ( !empty( $email ) ) ? $email : ''
        ]);
        if ( is_wp_error( $customer_id ) )
        {
            throw new Exception( $customer_id->get_error_message() );
        }

        // update digits user meta
        update_user_meta($customer_id, 'digits_phone_no', $phone_no );
        update_user_meta($customer_id, 'digits_phone', $phone );
        update_user_meta($customer_id, 'digt_countrycode', $country_code );

        // Auto set cookie for new user
        wc_update_new_customer_past_orders( $customer_id );
        wc_set_customer_auth_cookie( $customer_id );
    }
    else
    {
        // Auto set cookie for existing user
        $user = get_user_by('login', $phone );
        wc_update_new_customer_past_orders( $user->ID );
        wc_set_customer_auth_cookie( $user->ID );
    }
}

نکته دوّم: در صورتی که افزونه دیجیتس طوری تنظیم شده است که نام کاربری را براساس شماره تلفن همراه و بدون کد کشور مثل …۰۹۱۹ ساخته می‌شود، کافی است کد زیر را پیدا کرده :

$phone = $country_code . $phone_no;

و به جای آن کد زیر را جایگزین کنید.

$phone = $order->get_billing_phone();

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

نمایش تعداد فروش محصول براساس شناسه در ووکامرس

منبع : Business Bloomer

۴.۷/۵ - (۱۴۳ امتیاز)

12 دیدگاه روی “ثبت نام خودکار کاربر مهمان در برگه تسویه حساب ووکامرس

    • مدیر سایت می گوید:

      سلام دوست عزیز
      تنها راه حلش این هست که شما باید به جای ایمیل در کد بالا از شماره موبایل (billing_phone_number) استفاده کنین .

      باتشکر

  1. علی می گوید:

    اگه بخواییم بجای ایمیل از شماره موبایل استفاده بشه و با افزونه دیجیتس هماهنگ باشه امکانش هست کدش رو قرار بدید
    با تشکر

    • مدیر سایت می گوید:

      سلام علی جان.
      بگذار بررسی کنم ، اگر دیجیتس این قابلیت رو داشته باشه، مقاله رو به‌روزرسانی می‌کنم. چون دیجیتس وقتی ثبت نام انجام میده ، میخواد پیامک بفرسته به همین خاطر نباید بذاریم توی ووکامرس پیامک بفرسته و مستقیم و به صورت خودکار کاربر را در سایت ثبت نام کنه .

  2. غفاری می گوید:

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

  3. حامد می گوید:

    سلام
    ما از پرداخت میهمان استفاده میکنیم ولی برای کاربر حساب کاربری به صورت اتوماتیک ساخته نمیشه
    همین قطعه کد با تغییر به فیلد موبایل این کار رو انجام میده با شماره موبایل حساب کاربری میسازه؟ و اگر شخص بعدا برای ورود شماره خودش رو وارد کرد و دیجیتس براش کد میفرسته به همون شماره؟ اگر میشه این مورد رو برای دیجیتس حل کنید

    • مدیر سایت می گوید:

      باسلام
      کدهای بالا برای زمانیست که کاربر با ایمیل به راحتی داخل سایت ثبت نام بشه . برای دیجیتس در روزهای آینده به‌روزرسانی می‌کنیم و کدی رو قرار میدیم که بدون ارسال کد، کاربر داخل سایت ثبت نام بشه ولی توی دیجیتس داستانی که هست در نهایت برای ورود کاربر، حتماً باید به شماره تلفنش پیامک تأیید ارسال بشه و چاره ای غیر این نیست .

    • مدیر سایت می گوید:

      سلام دوست عزیز
      افزونه کراسنو یک افزونه ایرانی می‌باشد و هنوز به اندازه دیجیتس فراگیر نشده است. در صورتی که تمایل دارید برای این افزونه هم کدنویسی این بخش صورت گیرد می‌بایست فایل متن باز افزونه را برای ما ارسال نمایید یا اینکه هوک‌ها و فیلترهای مرتبط با ثبت نام را برای ما ارسال نمایید.

  4. محمود می گوید:

    سلام
    ممنون که کد موبایل رو قرار دادین
    الان مشکلی که در این کد وجود داره اینه که کاربر پس از خرید در سایت عضو میشه ولی خریدی که انجام داده در حالت مهمان هست و تو اکانتش قرار نمیگیره

    • مدیر سایت می گوید:

      کاربر گرامی ممنون از دیدگاه زیباتون، با ما در ارتباط باشید تا مشکل شما را بررسی و در صورت وجود رفع نماییم.

      • محمود می گوید:

        مشکل رو در کامنت بالا مطرح کردم شما که زحمت کد نویسیش رو انجام دادین این مشکل مهم که در کامنت بالا عرض کردم حل بفرمایید عالی میشه و ممنون تون میشم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *