همانطور که میدانید، در برگه تسویه حساب، گزینهای وجود دارد که کاربر مهمان با تیک زدن آن، ووکامرس به طور خودکار با ایمیل آن کاربر یک حساب کاربری ایجاد میکند ولی این فرآیند توسط کاربر مهمان انجام میشود و خب ممکن است کاربر مهمان اصلاً این گزینه را تیک نزند. در این مقاله قصد داریم نحوه ثبت نام خودکار کاربر مهمان در برگه تسویه حساب ووکامرس را به شما آموزش دهیم.
ثبت نام خودکار در برگه تسویه حساب ووکامرس
اگر تمایل دارید گزینه «میخواهید یک حساب کاربری ایجاد کنید» را از برگه تسویه حساب بردارید و همچنین ثبت نام کاربر مهمان را به صورت خودکار انجام دهید، کافی است مراحل زیر را به دقت دنبال کنید.
مرحله اوّل: به بخش پیکربندی ووکامرس رفته و در تب «حفظ حریم خصوصی حسابهای کاربری» و بخش «ساخت حساب کاربری»، تیک گزینه «به مشتری هنگام پرداخت اجازه ایجاد حساب کاربری دهید» را بردارید.
مرحله دوّم: قطعه کد زیر را به سایت وردپرسی خود اضافه کنید. شما برای انجام این کار کافی است قطعه کد را در 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
اگه بخواییم بجای ایمیل از شماره موبایل استفاده بشه تکلیف چیه
سلام دوست عزیز
تنها راه حلش این هست که شما باید به جای ایمیل در کد بالا از شماره موبایل (billing_phone_number) استفاده کنین .
باتشکر
اگه بخواییم بجای ایمیل از شماره موبایل استفاده بشه و با افزونه دیجیتس هماهنگ باشه امکانش هست کدش رو قرار بدید
با تشکر
سلام علی جان.
بگذار بررسی کنم ، اگر دیجیتس این قابلیت رو داشته باشه، مقاله رو بهروزرسانی میکنم. چون دیجیتس وقتی ثبت نام انجام میده ، میخواد پیامک بفرسته به همین خاطر نباید بذاریم توی ووکامرس پیامک بفرسته و مستقیم و به صورت خودکار کاربر را در سایت ثبت نام کنه .
سلام اگه ممکنه کدی بدین که بجای ایمیل با موبایل هماهنگ بشه و با دیجیتس هم سازگار بشه.
تو این یک ماه اوضاع کشور کد تایید پیامکی مختل شده و کلی کسب و کار به این مورد نیاز دارن که کاربر بدون کد تایید خرید کنه و همچنین با همون شماره موبایل وارد شده در صفحه تسویه حساب عضو سایت بشه
ممنون از وقتی که میذارین.
سلام
ما از پرداخت میهمان استفاده میکنیم ولی برای کاربر حساب کاربری به صورت اتوماتیک ساخته نمیشه
همین قطعه کد با تغییر به فیلد موبایل این کار رو انجام میده با شماره موبایل حساب کاربری میسازه؟ و اگر شخص بعدا برای ورود شماره خودش رو وارد کرد و دیجیتس براش کد میفرسته به همون شماره؟ اگر میشه این مورد رو برای دیجیتس حل کنید
باسلام
کدهای بالا برای زمانیست که کاربر با ایمیل به راحتی داخل سایت ثبت نام بشه . برای دیجیتس در روزهای آینده بهروزرسانی میکنیم و کدی رو قرار میدیم که بدون ارسال کد، کاربر داخل سایت ثبت نام بشه ولی توی دیجیتس داستانی که هست در نهایت برای ورود کاربر، حتماً باید به شماره تلفنش پیامک تأیید ارسال بشه و چاره ای غیر این نیست .
با سلام و تشکر از شما بابت پاسخگویی تون
افزونه کراسنو نیازی به کدنویسی برای ثبت نام پرداخت های مهمان نداره، چون یک تنظیم داره و کافیه فعال بشه.
بعد از فعال شدن این تنظیم، هر کاربر مهمانی که سفارشش رو تکمیل کنه به لیست کاربران سایت اضافه میشه و سفارش هم به اون اکانت متصل میشه
با احترام
سلام
لطفا افزونه کراسنو رو هم بررسی کنید چون ۳ حالت اعتبارسنجی موبایل برای صفحه تسویه حساب ووکامرس داره
با احترام
سلام دوست عزیز
افزونه کراسنو یک افزونه ایرانی میباشد و هنوز به اندازه دیجیتس فراگیر نشده است. در صورتی که تمایل دارید برای این افزونه هم کدنویسی این بخش صورت گیرد میبایست فایل متن باز افزونه را برای ما ارسال نمایید یا اینکه هوکها و فیلترهای مرتبط با ثبت نام را برای ما ارسال نمایید.
سلام
ممنون که کد موبایل رو قرار دادین
الان مشکلی که در این کد وجود داره اینه که کاربر پس از خرید در سایت عضو میشه ولی خریدی که انجام داده در حالت مهمان هست و تو اکانتش قرار نمیگیره
کاربر گرامی ممنون از دیدگاه زیباتون، با ما در ارتباط باشید تا مشکل شما را بررسی و در صورت وجود رفع نماییم.
مشکل رو در کامنت بالا مطرح کردم شما که زحمت کد نویسیش رو انجام دادین این مشکل مهم که در کامنت بالا عرض کردم حل بفرمایید عالی میشه و ممنون تون میشم
باسلام
یک موردی که ووکامرس داره اینه لیست سفارشات رو براساس ایمیل فیلتر میکنه مگر اینکه دیجیتس رو مجبور کنید که حتماً قبل ثبت نام کاربر وارد سایت شده باشه . در صورتی که وارد سایت شده باشه ، ووکامرس براساس شناسه کاربر سفارش رو ثبت میکنه در غیر اینصورت براساس ایمیل. یعنی وقتی بعد از ثبت چند سفارش کاربر ، کاربر ثبت نام کنه هر چی سفارش با ایمیل کاربری که ثبت نام شده یکسان هست در لیست سفارشات کاربر نمایش داده میشه .
میتونید این رو به صورت افزونه در بیارین
که بشه روی هر سایتی بدون کد نویسی اضافه کرد با هماهنگی دیجیتس
اگر هزینه هم باشه اوکی
سلام دوست عزیز
ممنون از پیشنهاد عالی تون . به علت درخواستهای بالا به زودی کدها تبدیل به افزونه میشن و توی مخزن منتشر میشه ان شاء الله.
باتشکر
سلام اگر افزونه منتشر شده ممنون میشیم در اختیار بزارید
سلام دوست عزیز
در دست اقدام و به زودی منتشر میشه . در صورتی که منتشر بشه از همین برگه اطلاع رسانی انجام میشه.
با درود
برای بنده وقتی کاربر موبایل رو وارد میکنه، به این صورت میشه: +۹۸۰۹۱۲۱۲۳۴۵۶۷۸۹
صفر بین کد کشور میافته
لطفا راهنمایی بفرمایید
باسپاس
باسلام
نام کاربری به این شکل میشه ؟ چون کد ارائه شده برای ثبت نام خودکار حساب کاربری و رمز عبور در داخل ووکامرس هستش .
سلام وب سایت من دیجیتس نداره و از کپچا استفاده میکنم و در صفحه تسویه ایمیل رو هم اختیاری کردم با کد.حال اگر این کد رو بزنیم نام کاربری و پسورد چی میشن؟ منظور پسورد شماره تماس میشه؟ نام کاربری ایمیل میشه؟منکه اختیاریش کردم چی میشه؟
باسلام خدمت کاربر گرامی
برای ثبت نام بالاخره یا شماره موبایل یا ایمیل یا نام کاربری نیازه پس نمیشه هیچکدوم رو نداشت و بازم ثبت نام کاربر به صورت خودکار انجام بشه .
تنها یک راه وجود داره اونم استفاده از یک اسکریپت اختصاصی که خودش به ازای هر کاربر یک حساب کاربری تصادفی بسازه و رمز هم بهش تخصیص بده که ما هیچ وقت پیشنهاد نمیکنیم.
باتشکر
سلام من در سایت سروش موبایل ثبت سفارش گوشی کلیدی رو بصورت ازاد رو تیک زدم که مشتری بدون ثبت نام خرید کنه ایا برای پسورد راهی هست که خود سیستم بتونه اتومات برای کاربر ثبت نام کنه پس از ثبت سفارش؟ چون بعد از ثبت سفارش وقتی مشتری اقدام به ایجاد حساب میکنه میگه سفارشم توی پنلم نیست
سلام و درود
بله با کدنویسی میشه اینکارو انجام داد.
در صورتی که نیاز به کدنویسی اختصاصی داشتید، با پشتیبانی در ارتباط باشید.
موفق باشید
باسلام این کدها رو نمیشه کپی کرد ؟ باید دوباره بنویسیم ؟
سلام دوست عزیز
شما به راحتی میتوانید کدها رو select و کپی کنید و در هر جایی که نیاز دارید از آن استفاده کنید.
موفق و پیروز باشید