یکی از مواردی که دوست داشتم به صورت پیش فرض بر روی وردپرس فعال باشد امکان ایجاد گروه های کاربری جدید با امکان مدیریت دسترسی های اون هستش. وردپرس به صورت پیش فرض چندین نقش کاربری (گروه کاربری) دارد ولی در بعضی موارد لازم است شما گروه های کاربری متفاوت با دسترسی ها متفاوت داشته باشید. خوب ما اینجا به شما کمک می کنیم با استفاده از کد نویسی یا افزونه بتوانید گروه های کاربری متفاوت ایجاد کنید و به مدیریت دسترسی های آنها بپردازید.
توجه داشته باید قبل از اعمال هرگونه تغییر در سایت اصلی خودتان از دیتابیس بک اپ تهیه کنید.
ایجاد گروه کاربری جدید در وردپرس با کدنویسی
اگر شما هم مثل من از نصب افزونه برای کارهای ساده متنفر هستید این قسمت اموزش براتون جالب خواهد بود. اما اگر دوست دارید با یک کلیک افزونه نصب کنید این قسمت از آموزش برای شما نیست و به انتهای آموزش برای معرفی افزونه مراجه نمایید.
ما برای این کار از توابع اصلی وردپرس استفاده می کنیم. که شامل :
1 2 3 4 5 |
add_role(); // افزودن نقش کاربری remove_role(); //حذف نقش کاربری add_cap(); //افزودن دسترسی یا compatible remove_cap(); //حذف دسترسی یا یک compatible get_role(); //دریافت دسترسی ها |
در زیر ما نمونه هایی رو برای آشنایی شما با هر یک از این توابع آورده ایم. برای استفاده از هر یک از کدها کافی هستش این کد رو به بخش functions قالب خودتون اضافه کنید.
نکته مهم : می توانید کد ها رو بعد از اعمال پاک کنید ولی توجه داشته باشید پاک کردن یک نقش کاربری یا دسترسی ها که از یک نقش کاربری برداشته اید با حذف کد باز نخواهند گشت برای انجام عمل برگشت باید دسترسی که افزوده اید یا پاک کرده اید را دوباره حذف یا اضافه کنید
ایجاد گروه کاربری جدید با دسترسی های نقش های کاربری پیش فرض وردپرس :
1 2 3 4 5 6 7 8 9 10 11 |
function create_custom_admin_role() { $capabilities = get_role('administrator')->capabilities; add_role( 'custom_admin', // مقدار 'my admin', // نام نمایشی $capabilities ); } // اضافه کردن گروه کاربری به وقت فعالسازی تم add_action('after_setup_theme', 'create_custom_admin_role'); |
در کد بالا به جای administrator می توانید از سایر نقش های کاربری استفاده کنید. همچنین به جای custom_admin مقدار دلخواه خود و به جای my admin نام نمایش دلخواه خود را می توانید قرار دهید.
همچنین می توانید این دسترسی ها رو ویرایش کنید مثلا برای نقش کاربری بالا می خواهم دسترسی به مدیریت نظرات را نداشته باشد. البته در انتها نحوه حدف دسترسی رو به یک روش دیگر را آموزش داده شده
1 2 |
// حذف ایجاد کاربر جدید unset($capabilities['create_users']); |
این کد باید قبل add_role آورده شود. همچنین می توانید از لیستی که پایین قرار داده شده دسترسی های دیگر رو غیر فعال کنید.
ایجاد گروه کاربری جدید با دسترسی های سفارشی :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function create_custom_user_role() { add_role( 'custom_user', // مقدار 'my custom user', // نام نمایشی array( 'edit_posts' => true, // ویرایش نوشتهها 'publish_posts' => true, // افزودن نوشته 'edit_pages' => true, // ویرایش برگهها 'publish_pages' => true, // افزودن برگه 'delete_pages' => true, // حذف برگه 'manage_options' => true, // تنظیمات سایت ) ); } // اضافه کردن گروه کاربری به وقت فعالسازی تم add_action('after_setup_theme', 'create_custom_user_role'); |
خوب اگر می خواهید یک نقش کاربری کاملا سفارشی ایجاد کنید می توانید از کد بالا استفاده کنید. در آرایه بالا می توانید سایر دسترسی ها که در پایین آورده شدن هستن را حذف و اضافه کنید و یک نقش کاربری کاملا سفارشی ایجاد کنید.
لیست دسترسی های نقش های کاربری در وردپرس :
در جدول زیر تمامی دسترسی های هر یک از نقش های کاربری آورده شده است که از سایت خود وردپرس هم می توانید بررسی کنید (منبع وردپرس)
Capability | Super Admin | Administrator مدیر کل | Editor ویرایشگر | Author نویسنده | Contributor مشارکت کننده | Subscriber مشترک |
---|---|---|---|---|---|---|
create_sites | Y | |||||
delete_sites | Y | |||||
manage_network | Y | |||||
manage_sites | Y | |||||
manage_network_users | Y | |||||
manage_network_plugins | Y | |||||
manage_network_themes | Y | |||||
manage_network_options | Y | |||||
upload_plugins | Y | |||||
upload_themes | Y | |||||
upgrade_network | Y | |||||
setup_network | Y | |||||
Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
activate_plugins | Y | Y (single site or enabled by network setting) | ||||
create_users | Y | Y (single site) | ||||
delete_plugins | Y | Y (single site) | ||||
delete_themes | Y | Y (single site) | ||||
delete_users | Y | Y (single site) | ||||
edit_files | Y | Y (single site) | ||||
edit_plugins | Y | Y (single site) | ||||
edit_theme_options | Y | Y | ||||
edit_themes | Y | Y (single site) | ||||
edit_users | Y | Y (single site) | ||||
export | Y | Y | ||||
import | Y | Y | ||||
Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
install_plugins | Y | Y (single site) | ||||
install_themes | Y | Y (single site) | ||||
list_users | Y | Y | ||||
manage_options | Y | Y | ||||
promote_users | Y | Y | ||||
remove_users | Y | Y | ||||
switch_themes | Y | Y | ||||
update_core | Y | Y (single site) | ||||
update_plugins | Y | Y (single site) | ||||
update_themes | Y | Y (single site) | ||||
edit_dashboard | Y | Y | ||||
customize | Y | Y | ||||
delete_site | Y | Y | ||||
Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
moderate_comments | Y | Y | Y | |||
manage_categories | Y | Y | Y | |||
manage_links | Y | Y | Y | |||
edit_others_posts | Y | Y | Y | |||
edit_pages | Y | Y | Y | |||
edit_others_pages | Y | Y | Y | |||
edit_published_pages | Y | Y | Y | |||
publish_pages | Y | Y | Y | |||
delete_pages | Y | Y | Y | |||
delete_others_pages | Y | Y | Y | |||
delete_published_pages | Y | Y | Y | |||
delete_others_posts | Y | Y | Y | |||
delete_private_posts | Y | Y | Y | |||
edit_private_posts | Y | Y | Y | |||
read_private_posts | Y | Y | Y | |||
delete_private_pages | Y | Y | Y | |||
edit_private_pages | Y | Y | Y | |||
read_private_pages | Y | Y | Y | |||
unfiltered_html | Y | Y (single site) | Y (single site) | |||
unfiltered_html | Y | Y | Y | |||
Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
edit_published_posts | Y | Y | Y | Y | ||
upload_files | Y | Y | Y | Y | ||
publish_posts | Y | Y | Y | Y | ||
delete_published_posts | Y | Y | Y | Y | ||
edit_posts | Y | Y | Y | Y | Y | |
delete_posts | Y | Y | Y | Y | Y | |
Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
read | Y | Y | Y | Y | Y | Y |
نحوه حذف نقش های کاربری وردپرس
برای حذف گروه های کاربری پیش فرض وردپرس یا نقش های سفارسی که خودتان اضافه کرده این می توانید به functions قالب خودتون کد زیر رو اضافه کنید:
1 |
remove_role( 'author' ); |
در کد بالا author مربوط به نقش نویسنده هست برای به دست آورد مقدار سایر نقش های کاربری کافی هست در بخش افزودن کاربر بر روی select باکس راست کلیک کرده و با استفاده از inspect مقادیر را مشاهده کنید.
توجه داشته باشید که با حذف هر یک از نقشه ها آن را به صورت دائمی پاک می کنید و بعد از پاک کردن کد مربوطه نقش کاربری باز نخواهد گشت.
shop_manager مدیر فروشگاه
customer مشتری
subscriber مشترک
contributor مشارکت کننده
author نویسنده
editor ویرایشگر
اضافه کردن دسترسی به یک نقش کاربری در وردپرس :
برای این مورد از add_cap() استفاده می کنیم در زیر یک نمونه افزودن دسترسی به نقش کاربری نویسنده آورده شده است.
کاربرد این تابع برای مواردی است که می خواهید به یک نقش کاربری دسترسی جدیدی بدهید.
1 2 3 4 5 6 7 8 |
function add_author_caps() { // دریافت دسترسی های گروه کاربری نویسنده $role = get_role( 'author' ); // افزودن دسترسی ویرایش محتوای سایر کاربران $role->add_cap( 'edit_others_posts' ); } add_action( 'admin_init', 'add_author_caps'); |
حذف دسترسی یک نقش کاربری در وردپرس :
خوب حالا شما می توانید با remove_cap() دسترسی های یک نقش کاربری رو محدود تر کنید.
1 2 3 4 5 6 7 8 |
function remove_author_caps() { // دریافت دسترسی های گروه کاربری نویسنده $role = get_role( 'author' ); // افزودن دسترسی ویرایش محتوای سایر کاربران $role->remove_cap( 'edit_others_posts' ); } add_action( 'admin_init', 'remove_author_caps'); |
خوب اگر در مورد کدهای بالا هر سوالی داشت باشید می توانید در بخش نظرات با ما در میان بگذارید خوشحال می شویم شما را راهنمایی کنیم.
افزونه مدیریت نقش های کاربری در وردپرس
برای مدیریت نقش های کاربری یا اضافه کردن گروه کاربری جدید پیشنهاد ما استفاده از افزونه User Role Editor هست که به صورت رایگان می توانید از مخزن وردپرس دانلود کنید. صفحه افزونه User Role Editor در وردپرس از امکانات این افزونه می تواند به موارد زیر اشاره کرد :
به طور خلاصه، افزونه وردپرس “User Role Editor” امکانات زیر را برایتان فراهم میکند:
- تغییر آسان نقشها و دسترسی کاربران با فعال کردن جعبهها.
- اضافه کردن نقشهای جدید و تنظیم دسترسی آنها.
- حذف نقشهای ایجاد شده توسط کاربر اگر به هیچ کاربری اختصاص داده نشده باشند.
- تغییر نقش پیشفرض کاربران جدید.
- تخصیص دسترسی ها برای هر کاربر به صورت جداگانه.
- تخصیص چندین نقش به یک کاربر به صورت همزمان.
- اضافه کردن یا حذف دسترسی ها، حتی از افزونههایی که غیرفعال شدهاند.
- پشتیبانی از مدیریت چندین وبسایت (Multi-site).
همچنین این افزونه نسخه غیر رایگان هم دارد که در مارکت های وردپرسی به فروش می رسد.