یکی از مشکلات ووکامرس این است که اگر یک مشتری بدون ورود به سایت شما، از شما خرید کند، سفارش بهصورت مهمان ثبت خواهد شد. برای حل مشکل ثبت مشتری به عنوان مهمان در سفارشات این مقاله را تا انتها دنبال کنید.
در آموزشهای قبل، به شما توضیح دادیم که از بخش ووکامرس > پیکربندی، میتوانید تنظیمات مربوط به فعالسازی ثبتنام بدون عضویت در ووکامرس را انجام دهید. در واقع کافی است که شما فقط وارد بخش “حفظ حریم خصوصی حسابهای کاربری” ووکامرس شوید. سپس تیک دو گزینهای که در بخش “پرداخت مهمان” وجود دارد را فعال کنید. سپس آموزش دیگری روی منتشر کردیم. که در آن بتوانید با اضافه کردن چند خط کد به فایل function.php خطای An account is already registered with your email address را در صفحه تسویه حساب رفع کنید.
اما مشکل دیگری که کاربران با آن مواجه میشوند. این است که وقتی یک مشتری، با ایمیلی که از قبل در سایت ثبتنام کرده است و دارای حساب کاربری است. اقدام به خرید میکند و تیک گزینه “میخواهید یک حساب کاربری ایجاد کنید؟” را فعال میکند. به عنوان کاربر مهمان شناخته میشود. (با وجود اینکه ایمیل مشتری از قبل در سایت وجود داشته است.) پس باید به صورت دستی مشتری را برای سفارشات مهمان تغییر دهند. در این مقاله نحوه حل این مشکل را توضیح خواهیم داد.
حل مشکل ثبت مشتری به صورت مهمان در سفارشات
پس حالا ما باید یک قطعه کد دیگر به سایت اضافه کنیم. سپس مشخص کنیم که اگر کاربر با ایمیلی که قبلا در سایت ثبتنام کرده است، اقدام به خرید کند. خریدش بهجای مهمان در ووکامرس، روی حالت مشتری ثبت شود. تا کاربر پس از اینکه وارد سایت شد، بقیه سفارشات ثبت شدهاش را در پنل کاربری مشاهده کند و به آنها دسترسی داشته باشد.
برای این کار کافی است مثل همیشه از منوی نمایش، روی ویرایشگر پوسته کلیک کنید. سپس فایل توابع پوسته (functions.php) را باز کنید و قطعه کد زیر را در انتهای این فایل قرار دهید.
function bistscript_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','bistscript_set_customer_email',10,2);
در صورتی که شما پس از وارد کردن قطعه کد بالا با خطای Internal Server Error مواجه شدید. کافی است مجددا کدهای وارد شده را مورد بررسی قرار دهید. چرا که این خطا یا خطای Error 500 تنها زمانی به وجود میآید که منابع سرور شما کم باشد، یا مشکلی در برنامهنویسی سایت شما وجود داشته باشد. با اضافه کردن این چند خط کد بالا هم نمیتوان گفت که منابع سرور به مشکل خورده باشند. بنابراین با دیدن این خطا شما باید مجددا کدهای نوشته شده مورد بررسی قرار دهید.
حالا مشاهده میکنید که در صورت ثبت سفارش توسط یک فرد که قبلا در سایت شما ثبتنام کرده اما وارد سایت نشده، سفارش با ایمیل مشتری ثبت خواهد شد.
موفق باشید.
- مشکلی دارید؟ جواب خود را در پست فروم بگیرید
- منبع : بیست اسکریپت لطفا رعایت کنید