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

2.6 / 5. تعداد رای: 5

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

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

ثبت مشتری به عنوان مهمان در سفارشات ووکامرس
ثبت مشتری به عنوان مهمان در سفارشات ووکامرس

در آموزش‌های قبل، به شما توضیح دادیم که از بخش ووکامرس > پیکربندی، می‌توانید تنظیمات مربوط به فعال‌سازی ثبت‌نام بدون عضویت در ووکامرس را انجام دهید. در واقع کافی است که شما فقط وارد بخش “حفظ حریم خصوصی حساب‌های کاربری” ووکامرس شوید. سپس تیک دو گزینه‌ای که در بخش “پرداخت مهمان” وجود دارد را فعال کنید. سپس آموزش دیگری روی منتشر کردیم. که در آن بتوانید با اضافه کردن چند خط کد به فایل function.php خطای An account is already registered with your email address را در صفحه تسویه حساب رفع کنید.

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

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

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

برای این کار کافی است مثل همیشه از منوی نمایش، روی ویرایشگر پوسته کلیک کنید. سپس فایل توابع پوسته (functions.php) را باز کنید و قطعه کد زیر را در انتهای این فایل قرار دهید.

function mihanwp_set_customer_email($order,$data){
    $email = $data['billing_email'];
    if(email_exists($email)){
        $user = get_user_by('email',$email);
        $order->set_customer_id($user->ID);
    }
}
add_action('woocommerce_checkout_create_order','mihanwp_set_customer_email',10,2);

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

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

ثبت سفارش با ایمیل مشتری در ووکامرس
ثبت سفارش با ایمیل مشتری در ووکامرس

موفق باشید.

نکته خاصی هست که این مقاله رو تکمیل‌تر کنه؟

  1. U17709 ۴ دی ۱۴۰۲

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

    • Reza Rad رضا راد ۴ دی ۱۴۰۲

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

      • U17709 ۴ دی ۱۴۰۲

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

  2. U317638 ۱ تیر ۱۴۰۲

    سلام می خواستم یک تجربه زا در اختیار همه بگزارم
    من ووکامرسم زمان ثبت سفارش توی تسویه حساب ارور internal server error را می داد من تمام روش های توی اینترنت و حتی سایت شما را رفتم اما جواب نداد حتی هاستینگ هم نتونست
    اما مشکلم با تغییر نسخه php حل شد نسخه ام روی 8.0 بود کردم 7.4 و مشکلم حلشد

  3. U317064 ۱۳ شهریور ۱۴۰۱

    سلام
    من نمیتونم سفارش ثبت کنم و قتی هم از طریق سبد خرید اطلاعات رو تکمیل میکنم و میزنم ثبت سفارش خطا میزنه
    خطاش هم اینه ( خطا در ذخیره سازی عملیات؛ خطای پایگاه داده
    لطفا اگه میشه جواب بدین

  4. U316384 ۲۶ مرداد ۱۴۰۱

    درود جناب راد
    2 سوال داشتم محبت کنید راهنمایی بفرمایید.

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

    • U316384 ۲۶ مرداد ۱۴۰۱

      توضیحات کامل:

      یه سایتی داریم نیاز داریم همزمان بجز خرید آنلاین، سفارش های حضوری رو هم بصورت دستی (افزودن دستی سفارش) ثبت کنیم که موجودی کالای فروشگاهمون بهم نریزه.
      یه مشکلی دارم اون هم اینکه وقتی سفارش رو دستی ثبت میکنیم کاربر رو میهمان میذاره و به بخش کاربرهای سایت اضافه نمیشه که بتونیم بعدا از اطلاعات کاربر استفاده کنیم. روی روش ثبت نام با ایمیل راهکارهایی بدست اوردم که مشتری میهمان رو به کاربر تبدیل کنه اما ما ثبت ناممون خلاصه میشه به تلفن همراه و نام و ایمیل استفاده نمیکنیم (بخاطر افزونه دیجیتس)

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

      راهی هست این مشتری های مهمان تبدیل به کاربر بشن؟

    • Reza Rad رضا راد ۳۰ مرداد ۱۴۰۱

      درود
      ۱. باید کد رو تغییر بدید و از فیلد موبایل بگیرید
      ۲. یکم سخت شد. بهتره کد اختصاصی استفاده بشه برای این مورد همراه با ویرایش صفحه ویرایش سفارش

  5. U13744 ۲۰ تیر ۱۴۰۱

    سلام.
    من توی سایت نمی خوام افراد بدون اینکه عضو بشن خرید کنن، با برداشتن تیک این مورد توی ووکامرس وقتی مشتری اضافه به سبد رو می زنه و بعد تسویه حساب رو میزنه، به صفحه ای منتقل می شه که نوشته: برای تسویه حساب باید وارد شوید.
    چی کار کنم که به جای اینکه به این صفحه بیاد، مستقیم بره به صفحۀ ورود و ثبت نام؟

    • Reza Rad رضا راد ۲۵ تیر ۱۴۰۱

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

  6. U37282 ۱۹ بهمن ۱۴۰۰

    سلام دوتا سوال دارم :
    ۱- من برای ثبت نام بجای ایمیل از دیجیتس استفاده میکنم ، آیا این کد برای دیجیتس هم کار میکنه؟
    ۲- آیا با آپدیت قالب این کدها از بین نمیرن؟ چطوری یکبار برای همیشه این کدهارو استفاده کنم؟
    ممنون میشم راهنماییم کنید.

  7. U25544 ۲۳ بهمن ۱۳۹۹
  8. U17441 ۲۱ بهمن ۱۳۹۹

    سلام. ۴ هفته پیش الکسای سایتم ۵۰ هزار بود. الآن شده ۷۷ هزار ! bizef .ir این آدرس سایتمه. چرا این طور شده؟ من مدام مقاله منتشر می‌کنم

    • Reza Rad رضا راد ۲۱ بهمن ۱۳۹۹

      سلام تفاوتی بین الکسای ۵۰ هزار و ۷۷ هزار وجود نداره. باید بیشتر کار کنید و الکسای زیر ۲۰ هزار کسب کنید اونوقت می‌تونید بررسی کنید که الکسای شما افت کرده یا خیر

      • U27765 ۲۴ بهمن ۱۳۹۹

        سلام
        الکسای وبسایت من 25 هزار بود و ما شروع کردیم به تولید محتوا
        بعد طی 3 هفته رسید به 5 هزار – و یهو بعد چند هفته رفت 10 هزار !!
        الانم نزدیک 7 هزار شده
        علت این همه تغییر زیاد رتبه چی میتونه باشه ؟

  9. U17441 ۲۰ بهمن ۱۳۹۹

    سلام. خواهش می‌کنم انیمیشن‌های ورودی و خروجی خبردار رو حذف نکنید.
    با تشکر

    • Reza Rad رضا راد ۲۱ بهمن ۱۳۹۹

      سلام این موضوع باعث حرکت کلی محتوای سایت موقع لود شدن میشه و کمی تجربه کاربری رو نامناسب جلوه میده

  10. U9919 ۲۰ بهمن ۱۳۹۹

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

    • Reza Rad رضا راد ۲۱ بهمن ۱۳۹۹

      درود بر شما
      کافیه از billing_email استفاده نکنید و به جاش فیلد موبایل رو وارد کنید.

      • U21662 ۲۹ فروردین ۱۴۰۰

        سلام ، خسته نباشید ، محتوا بسیار مفید بود، برای ایمیل تست کردم درست عمل میکرد، ولی برای شماره موبایل چون ما از افزونه دیجیتس استفاده میکنیم و ایمیل ضروری نیست ، با اینکه به جای biling-email طبق فرمایش شما از biling-phone استفاده کردم نتیجه ای نداشت و سفارش ثبت شده مهمان با یک شماره موبایل خاص در لیست سفارشات اکانت ساخته شده با اون شماره موبایل قرار نمیگیره مانند حالت ایمیل :(کد را به صورت زیر استفاده کردم)
        function mihanwp_set_customer_email($order,$data){
        $email = $data[‘billing_phone’];
        if(email_exists($email)){
        $user = get_user_by(’email’,$email);
        $order->set_customer_id($user->ID);
        }
        }
        add_action(‘woocommerce_checkout_create_order’,’mihanwp_set_customer_email’,10,2);
        آیا باید تغییررات دیگری هم انجام میدادم و یا چون از افزونه دیجیتس استفاده میکنیم نباید از billing_phone استفاده میکردم ؟! ممنون میشم راهنمایی کنین در این رابطه چون الان اکثر سایتهای فروشگاهی مبناشون شماره موبایل هست و کمتر از کاربرا ایمیل دریافت میکنن برای ثبت نام و خرید …
        حتی اگر افزونه ای هم باشه که به صورت خودکار مشتریان مهمان ما را به کاربر مشتری تبدیل کنه با همان شماره موبایل سفارش خوبه! (البته با همان اولویت شماره موبایل، ایمیل ندارن اکثر کاربرای ما) این مشکل رو برای ما حل کنه خوبه، معرفی کنین شما، با تشکر

        • Reza Rad رضا راد ۲۹ فروردین ۱۴۰۰

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

          • U310221 ۱۹ آذر ۱۴۰۰

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

  11. U28063 ۲۰ بهمن ۱۳۹۹

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

    • Reza Rad رضا راد ۲۱ بهمن ۱۳۹۹

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

      • U28063 ۲۱ بهمن ۱۳۹۹

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

        • Reza Rad رضا راد ۲۱ بهمن ۱۳۹۹

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

          • U28063 ۲۱ بهمن ۱۳۹۹

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

            • Reza Rad رضا راد ۲۱ بهمن ۱۳۹۹

              شما باید از افزونه‌های آموزش آنلاین در کنار ووکامرس استفاده کنید. کد خاصی نداره و هر افزونه‌ای که استفاده کنید کد خاص خودش رو داره. ما از افزونه اختصاصی برای اینکار استفاده می‌کنیم.

              • U28063 ۲۲ بهمن ۱۳۹۹

                با سلام خوب افزونه پیشنهادی شما چی هست؟
                لطفا راهنمایی کنید و بگویید
                چرا که سایت من فروش فایل آنلاین است و فایل هام باید آپدیت بشه
                تشکر از لطف شما

                • Reza Rad رضا راد ۲۳ بهمن ۱۳۹۹

                  افزونه learnpress بسیار مناسب هست.

                  • U28063 ۲۳ بهمن ۱۳۹۹

                    تشکر از شما آقای رضا راد

                  • U28063 ۲۶ بهمن ۱۳۹۹

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

                    • Reza Rad رضا راد ۲۶ بهمن ۱۳۹۹

                      سلام در هر صورت باید پلاگین اختصاصی برای اتصال پلاگین اختصاصی خود به سیستم آپدیت بسازید.

                  • U28063 ۲۶ بهمن ۱۳۹۹

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

                    • Reza Rad رضا راد ۲۶ بهمن ۱۳۹۹

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

                    • U28063 ۲۶ بهمن ۱۳۹۹

                      با سلام خوب هستید؟
                      خوب میتونید راهنمایی کنید من الان چیکار کنم؟

                    • U28063 ۲ اسفند ۱۳۹۹

                      سلام آقای رضا راد یعنی هیچ افزونه ای برای آپدیت فایل ها در ووکامرس موجود نیست؟

                    • Reza Rad رضا راد ۲ اسفند ۱۳۹۹

                      سلام توی سایت سرچ کنید آموزش ساخت افزونه رو قرار دادیم.

                    • U28063 ۲ اسفند ۱۳۹۹

                      منظورتون اینه افزونه اختصاصی باید بنویسیم؟

                    • Reza Rad رضا راد ۳ اسفند ۱۳۹۹

                      بله

                • U27765 ۲۴ بهمن ۱۳۹۹

                  لرن دش هم عالیه کارش

  12. U28063 ۲۰ بهمن ۱۳۹۹

    با سلام خوب هستید؟
    من دامنه وبسایتم 17 حرفی است و ir هم هست.
    به نظر شما در آینده سئو وبسایتم با تکنیک های اصولی و درست خوب و اوکی میشه؟
    الان که سئو سایتم خیلی پیشرفت کرده و خیلی خوبه.
    اما در آینده میتونم سئو خیلی بهتری را با این دامنه 17 حرفی به علاوه ار که میشه 19 داشته باشم؟

    • Reza Rad رضا راد ۲۰ بهمن ۱۳۹۹

      درود بر شما بله مشکلی در سئو نیست اما طول دامنه کمی زیاد هست.

      • U28063 ۲۰ بهمن ۱۳۹۹

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

        • Reza Rad رضا راد ۲۱ بهمن ۱۳۹۹

          سلام اگر سایت تازه راه اندازی شده دامنه را به دامنه کوتاه تری تغییر بدید

          • U28063 ۲۱ بهمن ۱۳۹۹

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

            • Reza Rad رضا راد ۲۱ بهمن ۱۳۹۹

              هر تصمیمی خوبی‌ها و بدی‌هایی داره. باید این مورد رو خودتون تشخیص بدید که دامنه رو تغییر بدید یا خیر.

              • U28063 ۲۱ بهمن ۱۳۹۹

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

                • Reza Rad رضا راد ۲۱ بهمن ۱۳۹۹

                  در هر صورت روی سئو تاثیر خواهد داشت. شما باید دامنه خود را ریدایرکت ۳۰۱ کنید تا تاثیر کمتری در سئو داشته باشه

                  • U28063 ۲۲ بهمن ۱۳۹۹

                    بله قطعا
                    ولی از چه دامنه ای به چه دامنه ای ؟
                    یعنی دامنه بلند ریدایرکت به کوتاهه بشه یا کوتاه به بلنده؟

                    • Reza Rad رضا راد ۲۳ بهمن ۱۳۹۹

                      دامنه فرعی به دامنه اصلی. باید ببینید میخواید کدوم یکی دامنه اصلی شما باشه

                • U27765 ۲۴ بهمن ۱۳۹۹

                  سلام
                  میتونید برای دسترسی بهتر میتونید دامنه کوتاه تری بخرید و ریدایرکت کنید به دامنه اصلی
                  اینجوری ریسک کمتری داره
                  مثلا میتونید دامنه sarzaminwp رو بخرید و ریدایرک کنید تا کاربر راحت تر ادرس رو بزنه

            • U15690 ۲۲ بهمن ۱۳۹۹

              استفاده از اسم wordpress توی دامنه باعث میشه تا شرکت وردپرس اون دامنه رو توی یه مدت زمانی ازتون بگیره و توی قوانینشم هست پس شما هرچه زود تر اسم سایتتون رو عوض کنید یا به جای وردپرس از wp استفاده کنید

              • Reza Rad رضا راد ۲۳ بهمن ۱۳۹۹

                این موضوع مدتها بحث بود اما ما سالها تست کردیم و مشکلی نداشت.

                • U27765 ۲۴ بهمن ۱۳۹۹

                  آقای علی حاجی محمدی گفتن که دامنه ای داشتن که عبارت wordpress رو داشت و وردپرس دامنه رو گرفت ازشون که !

                  • Reza Rad رضا راد ۲۵ بهمن ۱۳۹۹

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