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

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

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

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

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

مرحله دوّم: قطعه کد زیر را به سایت وردپرسی خود اضافه کنید. شما برای انجام این کار کافی است قطعه کد را در 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 );
    }
}

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

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

دریافت اطلاعات سفارش در ووکامرس

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

/**
 * @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 );
    }
}

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

$phone = $country_code . $phone_no;

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

$phone = $order->get_billing_phone();

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

نمایش شناسه محصولات متغیر ووکامرس در پیشخوان

منبع : Business Bloomer

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

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

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

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

      باتشکر

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

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

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

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

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

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

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

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

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

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

      • ابراهیمی میگوید:

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

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

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

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

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

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

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

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

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

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

          باسلام
          یک موردی که ووکامرس داره اینه لیست سفارشات رو براساس ایمیل فیلتر میکنه مگر اینکه دیجیتس رو مجبور کنید که حتماً قبل ثبت نام کاربر وارد سایت شده باشه . در صورتی که وارد سایت شده باشه ، ووکامرس براساس شناسه کاربر سفارش رو ثبت میکنه در غیر اینصورت براساس ایمیل. یعنی وقتی بعد از ثبت چند سفارش کاربر ، کاربر ثبت نام کنه هر چی سفارش با ایمیل کاربری که ثبت نام شده یکسان هست در لیست سفارشات کاربر نمایش داده میشه .

  5. مسعود میگوید:

    میتونید این رو به صورت افزونه در بیارین
    که بشه روی هر سایتی بدون کد نویسی اضافه کرد با هماهنگی دیجیتس
    اگر هزینه هم باشه اوکی

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

      سلام دوست عزیز
      ممنون از پیشنهاد عالی تون . به علت درخواست‌های بالا به زودی کدها تبدیل به افزونه میشن و توی مخزن منتشر میشه ان شاء الله.
      باتشکر

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

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

  6. مهران میگوید:

    با درود
    برای بنده وقتی کاربر موبایل رو وارد میکنه، به این صورت میشه: +۹۸۰۹۱۲۱۲۳۴۵۶۷۸۹
    صفر بین کد کشور میافته
    لطفا راهنمایی بفرمایید
    باسپاس

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

      باسلام
      نام کاربری به این شکل میشه ؟ چون کد ارائه شده برای ثبت نام خودکار حساب کاربری و رمز عبور در داخل ووکامرس هستش .

  7. mohamad arab میگوید:

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

    • فاطمه نصیری میگوید:

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

      باتشکر

  8. soroosh-mobile میگوید:

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

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

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

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

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

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

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