اخیراً من یک پروژه توسعه وردپرس را انجام دادم که نیاز به ثبت نقش کاربر سفارشی با استفاده از حساب پیشفرض ووکامرس داشت. پس از بررسی، مشتری درخواست کرد که پس از ثبت نام کاربر مربوطه در سایت، ما باید تغییر مسیر نقش های کاربر سفارشی را جدا کنیم. بنابراین ما برای هر کاربر بر اساس نقشش به قلاب تغییر مسیر ووکامرس نیاز داشتیم.
در حالت ایدهآل، اولین کاربر مشتری و کاربر دیگر عضوی خواهد بود که قبل از دسترسی به محتوای محدود، نیازی به پرداخت هزینه ندارد.
برای دستیابی به این تغییر مسیر ثبت نام پست، ما نیاز به انجام تعدادی کار داریم، اجازه دهید به طور خلاصه توضیح دهم که چگونه می توانید کاربران را پس از ثبت نام بر اساس نقش کاربری آنها هدایت کنید.
تغییر مسیر ووکامرس بر اساس نقش های کاربر
ابتدا، باید بررسی کنیم که آیا نقش کاربر وجود دارد یا خیر، اکنون میتوانیم از دستور if برای هدایت مشروط کاربران مختلف به صفحات مختلف استفاده کنیم. بیایید با بررسی وجود نقش های کاربر شروع کنیم.
// بررسی کنید که آیا کاربر فعلی نقشها را مشخص کرده است یا خیر function check_user_role($roles, $user_id = NULL) { if ($user_id) $user = get_userdata($user_id); else $user = wp_get_current_user(); if (empty($user)) return false; foreach ($user->roles as $role) { if (in_array($role, $roles)) { return true; } } return false; }
پس از اینکه مشخص شد کاربر دارای نقش های مشخص شده است، اکنون باید از عبارت if استفاده کنیم که به صورت مشروط برای نقش کاربر خاص وردپرس آزمایش می شود. اگر پس از ثبت نام، نقش پیدا شد، می توان تغییر مسیر ثبت نام ووکامرس را برای آن نقش خاص آغاز کرد.
ووکامرس تغییر مسیر کاربران پس از ثبت نام مثال
در حالت ایده آل، هدف ما هدایت مشتریان به صفحه پرداخت سفارشی پس از ثبت نام است. کارکنان می توانند پس از ثبت نام به صفحه پروفایل حساب کاربری خود مراجعه کنند. اینگونه است که پس از ثبت نام در چهار مرحله به این تغییر مسیر ووکامرس می رسیم.
- ما یک تابع برای تغییر مسیر کاربر خاص ایجاد می کنیم، به عنوان مثال – مشتری پس از ثبت نام.
- ما تابع بالا check_user_role را فراخوانی می کنیم تا نقش خاصی را که در مرحله بالا ایجاد کردیم مشخص کنیم.
- URL را که میخواهیم مشتری را به داخل تابعی که ایجاد کردهایم هدایت کنیم، برمیگردانیم.
- اقدام تغییر مسیر ثبت نام ووکامرس را اضافه کنید.
function custom_registration_redirect() { if (check_user_role(array('customer'))) { return site_url('/payment/'); } } add_action('woocommerce_registration_redirect', 'custom_registration_redirect', 2);
اکثر کاربران جدید وردپرس یا توسعه دهندگان مبتدی نمی توانند بفهمند کجا باید این کد را اضافه کنند، شما می توانید این کد را ترجیحاً در فایل functions.php تم کودک به فایل functions.php خود اضافه کنید.
مطمئن شوید که بخش مربوطه را جایگزین کرده اید تا با نقش کاربری و صفحه تغییر مسیر مطابقت داشته باشد. همچنین میتوانید آخرین دستور if را برای اضافه کردن تغییر مسیرهای بیشتر برای نقشهای بیشتر با استفاده از عبارت if-else گسترش دهید و آن را با یک دستور Switch جایگزین کنید.
در نهایت، این کد کامل برای تغییر مسیر کاربران پس از ثبت نام بر اساس نقش آنها در ثبت نام ووکامرس است:
// بررسی کنید که آیا نقش های فعلی مشخص شده توسط کاربر وجود دارد یا خیر function check_user_role($roles, $user_id = NULL) { if ($user_id) $user = get_userdata($user_id); else $user = wp_get_current_user(); if (empty($user)) return false; foreach ($user->roles as $role) { if (in_array($role, $roles)) { return true; } } return false; } // یک تابع Redirection + WP Action ایجاد کنید function custom_registration_redirect() { if (check_user_role(array('customer'))) { // Add the User Role in the Array return site_url(''); //Add your redirect page slug here } } add_action('woocommerce_registration_redirect', 'custom_registration_redirect', 2);