نمایش منو برای نقش کاربری خاص در وردپرس
- افزونه وردپرسمقالات آموزشی
- بروزرسانی شده در

اگه سایتتون چند نوع کاربر داره، احتمالاً نمیخواید همه یک منوی یکسان ببینن. مثلاً میتونید لینک ورود رو فقط به مهمانها، لینک حساب کاربری رو فقط به اعضا و یک گزینه مدیریتی رو فقط به مدیرها نشون بدید. توی این آموزش این کار رو با افزونه رایگان Nav Menu Roles انجام میدیم.
اول مشخص میکنیم خود وردپرس چه امکاناتی داره، بعد افزونه رو نصب میکنیم و نمایش هر گزینه منو رو به وضعیت ورود یا نقش کاربر وابسته میکنیم. در آخر هم یک محدودیت خیلی مهم رو میگیم: مخفیشدن لینک به معنی بستهشدن دسترسی به صفحه مقصد نیست.
آنچه در این مقاله میخوانید
آیا خود وردپرس این قابلیت رو داره؟
خود وردپرس به شما اجازه میده منو بسازید و گزینههای اون رو جابهجا یا حذف کنید، ولی برای نمایش شرطی هر گزینه بر اساس نقش کاربری، تنظیم آمادهای توی هسته وردپرس نداره. برای همین توی این آموزش از Nav Menu Roles استفاده میکنیم که رایگانه و از مخزن رسمی وردپرس نصب میشه.
قبل از ادامه، نوع قالبتون هم مهمه. اگه توی پیشخوان مسیر «نمایش ← فهرستها» رو میبینید، قالبتون کلاسیک یا ترکیبیه و میتونید مراحل این آموزش رو انجام بدید. اگه فقط «نمایش ← ویرایشگر» رو میبینید، قالبتون بلوکیه و منو با بلوک «راهبری» مدیریت میشه. این افزونه آموزش و تنظیمات اصلی خودش رو برای صفحه کلاسیک فهرستها ارائه میکنه؛ پس سازگاریش با منوی قالب بلوکی رو باید قبل از استفاده روی سایت آزمایشی بررسی کنید.
نصب افزونه رایگان Nav Menu Roles
توی پیشخوان وردپرس به «افزونهها ← افزودن افزونه تازه» برید. عبارت Nav Menu Roles رو جستوجو کنید، افزونهای با همین نام رو نصب کنید و بعد روی «فعالکردن» بزنید. بهتره قبل از نصب، سازگاری نسخه فعلی افزونه رو با نسخه وردپرس و PHP هاستتون توی صفحه رسمی افزونه بررسی کنید.

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

حالا به «نمایش ← فهرستها» برید و فهرستی رو انتخاب کنید که میخواید تغییرش بدید. یکی از گزینههای منو رو باز کنید تا بخش Display Mode رو ببینید. Display Mode یعنی مشخصکردن اینکه اون گزینه برای چه افرادی نمایش داده بشه.
- Everyone: گزینه منو برای همه، چه مهمان و چه عضو، نمایش داده میشه.
- Logged Out Users: گزینه فقط به افرادی نمایش داده میشه که وارد حساب کاربریشون نشدن. این انتخاب برای لینک ورود یا ثبتنام مناسبه.
- Logged In Users: گزینه فقط به کاربرانی نمایش داده میشه که وارد سایت شدن. این انتخاب برای لینک حساب کاربری یا محتوای مخصوص اعضا کاربرد داره.
انتخاب نقشهای کاربری مجاز
اگه Logged In Users رو انتخاب کنید، فهرست نقشهای کاربری پایین همون بخش نمایش داده میشه. نقش یعنی سطحی مثل مشترک، نویسنده، ویرایشگر یا مدیر که مشخص میکنه هر کاربر چه کارهایی میتونه انجام بده. نقشهای موردنظرتون رو انتخاب کنید و در پایان روی «ذخیره فهرست» بزنید. اگه هنوز با نقشها آشنا نیستید، آموزش مدیریت کاربران وردپرس کمکتون میکنه.

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

مخفیکردن منو دسترسی به صفحه رو نمیبنده
Nav Menu Roles فقط لینک رو از منو پنهان میکنه. اگه کسی آدرس مستقیم صفحه رو داشته باشه، مخفیکردن گزینه منو بهتنهایی جلوی بازشدن اون صفحه رو نمیگیره. برای محتوای خصوصی، دوره آموزشی یا بخش مخصوص اعضا باید دسترسی خود صفحه رو هم با یک راهکار عضویت یا کنترل دسترسی معتبر محدود کنید.
افزونه If Menu هم قبلاً برای شرطیکردن منو معرفی شده، ولی پیشنهاد اصلی این آموزش نیست؛ چون وضعیت نگهداری و سازگاری نسخه فعلیش باید قبل از استفاده با دقت بررسی بشه. برای این آموزش همون Nav Menu Roles رایگان انتخاب سادهتر و متمرکزتریه.
جمعبندی
با Nav Menu Roles میتونید هر گزینه منو رو برای همه، مهمانها، اعضای واردشده یا نقشهای مشخص نمایش بدید. این روش برای قالبهایی مناسبه که صفحه کلاسیک «نمایش ← فهرستها» رو دارن. فقط یادتون نره بعد از هر تغییر، منو رو با حسابهای آزمایشی بررسی کنید و برای بستن دسترسی واقعی به محتوا، محدودیت جداگانهای روی صفحه مقصد بذارید.
این روش برای قالبهای بلوکی هم مناسبه؟
این آموزش بر پایه صفحه کلاسیک «نمایش ← فهرستها» نوشته شده. قالبهای بلوکی منو رو با بلوک راهبری داخل ویرایشگر سایت مدیریت میکنن؛ پس سازگاری افزونه رو قبل از استفاده روی یک سایت آزمایشی بررسی کنید.

چجوری میتونم تو حساب کاربری یا پنل کاربری مشتری نقشش رو نشون بدم ک بدونه این نقش رو داره؟
از این کد استفاده کنید:
$user = wp_get_current_user();
$roles = $user->roles; // array of role slugs, e.g. [‘administrator’]
if ( ! empty( $roles ) ) {
echo esc_html( $roles[0] ); // first role
}