ریدایرکت کاربران مهمان به صفحه ورود در سبد خرید و تسویه حساب ووکامرس

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

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

چرا کاربران را به ورود به سایت قبل از تسویه حساب مجبور کنیم؟

اگرچه ووکامرس به صورت پیش‌فرض گزینه تسویه حساب مهمان (Guest Checkout) را فعال می‌کند,اما بسیاری از فروشگاه‌ها ترجیح می‌دهند کاربران قبل از تکمیل خرید، وارد سایت شوند. این تصمیم مزایای متعددی دارد:

  • جمع‌آوری اطلاعات مشتریان: با اجباری کردن ورود، اطلاعات کامل مشتریان را برای بازاریابی ایمیلی و ارسال پیام‌های تبلیغاتی در اختیار خواهید داشت.
  • افزایش وفاداری مشتریان: کاربرانی که حساب کاربری دارند، احتمال بازگشت مجدد به فروشگاه شما بیشتر است.
  • مدیریت بهتر سفارشات: امکان مشاهده تاریخچه خرید، وضعیت سفارش و دانلود فایل‌های خریداری‌شده برای کاربران فراهم می‌شود.
  • کاهش سوءاستفاده: با ثبت‌نام کاربران، می‌توانید از خریدهای تکراری با اطلاعات نادرست یا سوءاستفاده از تخفیف‌ها جلوگیری کنید.
  • بهبود نرخ تبدیل: اگرچه ممکن است برخی کاربران را از دست بدهید، اما کاربرانی که ثبت‌نام می‌کنند، معمولاً مشتریان وفادارتری هستند.

راهکار هدایت کاربران مهمان با کد اختصاصی

برای هدایت کاربران مهمان به صفحه ورود در ووکامرس، از هوک template_redirect استفاده می‌کنیم. این هوک یکی از بهترین نقاط برای انجام ریدایرکت‌های شرطی در وردپرس است. کد ارائه شده در این مقاله، با استفاده از توابع is_user_logged_in()، is_cart() و is_checkout()، وضعیت ورود کاربر و صفحه فعلی را بررسی می‌کند و در صورت نیاز، کاربر را به صفحه حساب کاربری ووکامرس هدایت می‌کند. همچنین در نسخه پیشرفته‌تر کد، امکان بازگشت به صفحه قبلی پس از ورود نیز فراهم شده است تا تجربه کاربری بهینه‌تری ارائه شود. این روش کاملاً استاندارد، سبک و بدون نیاز به نصب افزونه است و با تمامی نسخه‌های ووکامرس سازگاری دارد.

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

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

/*
 * Redirect Guest Users to Login Page on WooCommerce Cart & Checkout
 * Forces non-logged-in users to log in before accessing cart or checkout pages
 * Mahdi Jafarzadeh
 * https://www.wpwm.ir/
 */

// Redirect guests to login when accessing cart or checkout
add_action('template_redirect', 'redirect_guest_to_login_cart_checkout');

function redirect_guest_to_login_cart_checkout() {
    // Check if user is not logged in and is on cart or checkout page
    if (!is_user_logged_in() && (is_cart() || is_checkout())) {
        // Get the URL of the WooCommerce My Account page
        $login_url = get_permalink(get_option('woocommerce_myaccount_page_id'));
        
        // Redirect to the My Account (login) page
        wp_redirect($login_url);
        exit();
    }
}

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

برای بهبود تجربه کاربری، نسخه پیشرفته‌تری از کد را نیز ارائه می‌دهیم که پس از ورود کاربر، او را به همان صفحه‌ای که درخواست کرده بود (سبد خرید یا تسویه حساب) بازمی‌گرداند. این کد با افزودن یک پارامتر redirect_to به آدرس صفحه ورود، آدرس صفحه قبلی را ذخیره کرده و پس از ورود، کاربر را به همان صفحه هدایت می‌کند.

/*
 * Redirect Guest Users to Login with Return URL on WooCommerce Cart & Checkout
 * Forces non-logged-in users to log in and redirects them back after login
 * Mahdi Jafarzadeh
 * https://www.wpwm.ir/
 */

add_action('template_redirect', 'redirect_guest_to_login_with_return');

function redirect_guest_to_login_with_return() {
    // Check if user is not logged in and is on cart or checkout page
    if (!is_user_logged_in() && (is_cart() || is_checkout())) {
        // Get the current page URL to redirect back after login
        $current_url = get_permalink();
        
        // Build the My Account URL with the redirect parameter
        $login_url = add_query_arg(
            'redirect_to',
            urlencode($current_url),
            get_permalink(get_option('woocommerce_myaccount_page_id'))
        );
        
        // Redirect to the login page with return URL
        wp_redirect($login_url);
        exit();
    }
}

نحوه عملکرد کد به صورت گام به گام

در این بخش، هر بخش از کد را به صورت دقیق بررسی می‌کنیم و نحوه عملکرد آن را توضیح می‌دهیم:

  1. خط ۶ – افزودن هوک template_redirect: با استفاده از add_action('template_redirect', 'redirect_guest_to_login_cart_checkout')، یک عملکرد به هوک template_redirect اضافه می‌کنیم. این هوک درست قبل از بارگذاری قالب صفحه اجرا می‌شود و زمان مناسبی برای انجام ریدایرکت‌های شرطی است.
  2. خط ۸ – تعریف تابع: تابع redirect_guest_to_login_cart_checkout تعریف می‌شود که حاوی منطق اصلی ریدایرکت است.
  3. خط ۱۰ – بررسی شرط: با استفاده از !is_user_logged_in() بررسی می‌شود که آیا کاربر وارد سایت نشده است و با (is_cart() || is_checkout()) بررسی می‌شود که آیا صفحه فعلی سبد خرید یا تسویه حساب است یا خیر.
  4. خط ۱۳ – دریافت آدرس صفحه ورود: با استفاده از get_option('woocommerce_myaccount_page_id') شناسه صفحه حساب کاربری ووکامرس دریافت شده و با get_permalink() آدرس کامل آن به دست می‌آید.
  5. خط ۱۶ – اجرای ریدایرکت: با استفاده از wp_redirect()، کاربر به صفحه حساب کاربری هدایت می‌شود. دستور exit() بلافاصله پس از ریدایرکت، از ادامه اجرای کد جلوگیری می‌کند.
  6. نسخه پیشرفته – افزودن پارامتر بازگشت: در نسخه پیشرفته، با استفاده از add_query_arg()، پارامتر redirect_to به آدرس صفحه ورود اضافه می‌شود که حاوی آدرس صفحه قبلی (سبد خرید یا تسویه حساب) است.

نکات مهم

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

  • استفاده از قالب فرزند: کد را در فایل functions.php قالب فرزند قرار دهید تا با بروزرسانی قالب اصلی، تغییرات شما از بین نرود.
  • غیرفعال کردن تسویه حساب مهمان: برای اینکه این کد به درستی کار کند، باید گزینه تسویه حساب مهمان را در ووکامرس غیرفعال کنید. برای این کار، به مسیر WooCommerce > Settings > Accounts & Privacy بروید و تیک گزینه Enable guest checkout را بردارید.
  • تست پس از اعمال کد: پس از افزودن کد، حتماً با یک مرورگر ناشناس (Incognito) یا کاربری که وارد سایت نشده است، صفحات سبد خرید و تسویه حساب را باز کنید تا از عملکرد صحیح ریدایرکت اطمینان حاصل کنید.
  • سازگاری با افزونه‌های صفحه‌ساز: برخی افزونه‌های صفحه‌ساز مانند Elementor ممکن است نحوه نمایش صفحات را تغییر دهند. در صورت بروز مشکل، کد را با یک برنامه‌نویس وردپرس بررسی کنید.
  • استفاده از افزونه به جای کد: اگر با ویرایش فایل functions.php آشنایی ندارید، می‌توانید از افزونه‌های آماده مانند Force Authentification Before Checkout استفاده کنید. این افزونه‌ها قابلیت‌های مشابهی را بدون نیاز به کدنویسی فراهم می‌کنند.
  • پیام به کاربر: برای بهبود تجربه کاربری، می‌توانید در صفحه ورود، پیامی مبنی بر اینکه کاربر برای تکمیل خرید باید وارد شود، نمایش دهید.
  • رفع مشکل ریدایرکت پس از ورود: اگر پس از ورود، کاربر به صفحه حساب کاربری بازگردانده شد و به صفحه قبلی هدایت نشد، از نسخه پیشرفته کد (با پارامتر redirect_to) استفاده کنید.

جمع‌بندی

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

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

نظر یا سوال شما درباره این کد

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

ایمیل شما منتشر نخواهد شد.
اولین نفری باشید که نظر می دهد!

مقالات آموزش و نکات وردپرس