آموزش نقش‌های کاربری وردپرس و ویرایش نقش‌ها

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

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

در وردپرس از دو مفهوم برای تعیین سطح دسترسی استفاده می‌شود؛ نقش (role) و قابلیت یا توانمندی (capability). هر نقش کاربری دارای چندین قابلیت است و قابلیت‌ها در وردپرس، توانایی انجام یک کار را مشخص می‌کنند.

مثلاً «کاربر عضو» یک نقش کاربری است؛ این نقش قابلیت‌های زیر را دارد:

  • می‌تواند در دوره‌های آموزشی شرکت کند.
  • می‌تواند در پرسش و پاسخ‌ها شرکت کند.

اما نمی‌تواند سایر کاربران را ویرایش کند! پس این قابلیت را ندارد.

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

نقش کاربری در وردپرس

وقتی نصب وردپرس را انجام می‌دهیم، ۵ نقش کاربری پیشفرض در سیستم ما وجود دارد. در لیست زیر توضیح مختصری از هر کدام داده‌ام:

  • مدیر کل (Administrator) : قدرتمندترین نقش کاربری در سایت است که می‌تواند پست‌ها، کاربران، تنظیمات، پوسته و افزونه‌های وردپرس را مدیریت کند. منظورم از مدیریت، ویرایش، افزودن و حذف است.
  • ویرایشگر (Editor) : ویرایشگرها کنترل کامل به محتوای سایت دارند؛ یعنی می‌توانند همه پست‌ها و نظرات را مدیریت کنند. آن‌ها به تنظیمات و سایر کاربران دسترسی ندارند.
  • نویسنده (Author) : نویسندگان فقط امکان مدیریت پست‌های خودشان را دارند.
  • مشارکت‌کننده (Contributor) : مشارکت‌کننده می‌تواند پست جدید ثبت کرده یا پست‌های قبلی خودش را ویرایش کند اما نمی‌تواند آن‌ها را منتشر کرده و فایل آپلود کند.
  • مشترک (Subscriber) : این نقش برای کاربران عادی سایت شماست. مشترکان می‌توانند وارد سایت شده، پروفایل و پسوردشان را آپدیت کنند؛ اما هیچ دسترسی مدیریتی به محتوا یا تنظیمات ندارند.

تغییر نقش کاربران وردپرس

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

وقتی وارد صفحه افزودن یا ویرایش یک کاربر می‌شویم، گزینه‌ای به اسم «نقش» وجود دارد. نقش‌های پیشفرض و سایر نقش‌هایی که احتمالاً توسط افزونه‌های ما به سایتمان اضافه شده‌اند در لیست این گزینه نمایش داده شده است.

گزینه تغییر نقش کاربری در وردپرس
گزینه تغییر نقش کاربری در وردپرس

با انتخاب نقش مورد نظر، می‌توانیم نقش کاربری یکی از کاربران را در وردپرس تغییر دهیم.

یک کاربر می‌تواند برای مدتی نقش «مدیر کل» را داشته باشد و سپس به «مشترک» تغییر کند. با این تغییر، اطلاعات قبلی او (نظیر پست‌های منتشرشده یا فایل‌های آپلودی) حذف نخواهند شد. اما باید توجه کنید که متناسب با نقش کاربری جدید، ممکن است تا زمان دارا بودن نقش جدید، به بخش‌های قبلی دسترسی نداشته باشد.

تغییر دسترسی roleهای وردپرس

به عنوان مدیر سایت یا توسعه‌دهنده ممکن است بخواهید دسترسی نقش‌های پیشفرض را تغییر دهید. این کار به دو روش قابل انجام است:

  1. استفاده از کد تغییر نقش کاربری
  2. استفاده از افزونه تغییر نقش‌های کاربری وردپرس

برای روش اول باید به کمک روش‌های افزودن کد PHP به وردپرس قطعه کدی مشابه زیر را در سایت خود قرار دهید. پیشنهاد من استفاده مستقیم آن در فایل functions.php است.

<?php
function add_theme_caps() {
    $role = get_role('contributor');

    $role->add_cap('upload_files');

    $role->remove_cap('delete_posts');
}
add_action( 'admin_init', 'add_theme_caps');
?>

در این قطعه کد، یک تابع به اکشن وردپرس admin_init متصل کرده‌ام. در بدنه تابع ابتدا نقش contributor را گرفته و سپس دو تغییر روی آن انجام داده‌ام:

  • با متد add_cap() توانایی آپلود فایل را به این نقش اختصاص داده‌ام.
  • با متد remove_cap() توانایی حذف پست‌ها را از او گرفته‌ام.

به همین روش، می‌توانیم توانایی‌های نقش‌های کاربری در وردپرس را تغییر دهیم. می‌توانیم تعداد زیادی از قابلیت‌های را حذف کرده یا قابلیت‌های بیشتری به آن‌ها اضافه کنیم. اگر برنامه‌نویس هستید و با توابع آشنا نیستید، پیشنهاد می‌کنم آموزش تابع در PHP را ببینید.

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

افزودن نقش کاربری جدید به وردپرس

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

برای افزودن نقش جدید به وردپرس، از تابع add_role() استفاده می‌کنیم. این تابع ۳ آرگومان ورودی می‌گیرد:

  1. نام نقش کاربری
  2. نام نمایشی نقش
  3. آرایه‌ای از capabilityها یا همان سطح دسترسی‌ها

به کمک قطعه کد زیر، یک نقش کاربری جدید به نام «supervisor» (به فارسی یعنی ناظر) اضافه کرده‌ام که توانایی مدیریت نوشته در وردپرس و مدیریت دیدگاه‌ها را دارد.

<?php
function sbzd_add_new_role() {
    add_role( 'supervisor', 'کاربر ناظر', array(
        'read' => true,
        'edit_posts' => true,
        'publish_posts' => true,
        'edit_others_posts' => true
        'moderate_comments' => true) );
}
add_action( 'init', 'sbzd_add_new_role' );
?>

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

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

در مجموع پیشنهاد می‌کنم اگر نیاز به تغییرات زیادی در دسترسی‌های یک نقش پیشفرض دارید، یک نقش جدید به سایت اضافه کنید.

افزونه تغییر سطح دسترسی کاربران

اگر دوست ندارید از کد برای تغییر وظایف نقش‌های کاربری یا افزودن نقش جدید در وردپرس استفاده کنید، ۳ افزونه محبوب و کاربردی به شما معرفی می‌کنم:

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

افزونه‌های تغییر نقش کاربری لیست capabilityهای هر نقش را نمایش می‌دهند و ما می‌توانیم هر قابلیت را متناسب با نیازمان حذف یا اضافه کنیم.

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

یکی از افزونه‌های مدیریت نقش کاربری وردپرس
یکی از افزونه‌های مدیریت نقش کاربری وردپرس

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

امیدوارم با این آموزش با نقش‌های کاربری و با روش‌های تغییر نقش کاربری در وردپرس آشنا شده باشید. اگر تجربه‌ای در کار با این روش‌ها یا سؤالی دارید، از بخش دیدگاه‌ها با ما و دوستانتان به اشتراک بگذارید. 🙂