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

نقش های جدید در وردپرس
تابع اضافه کردن نقش جدید در وردپرس :
add_role( string $role, string $display_name, bool[] $capabilities = array() ) add_role( $role, $display_name, $capabilities );
با استفاده از کد پایین یک نقش جدید دقیقا مشابه با مدیرکل با همون سطح از اختیارات و قابلیت ها ایجاد میشه.
add_role( 'superintendent', 'Superintendent', get_role( 'administrator' )->capabilities );
یک نمونه دیگه ساخت نقش سفارشی در وردپرس :
add_role( 'guest_author', __( 'Guest Author', 'testdomain' ), array( 'read' => true, // true allows this capability 'edit_posts' => true, 'delete_posts' => false, // Use false to explicitly deny ) );
لیست کامل قابلیت های هر سطح کاربری :
Super Admin
=========================
create_sites
delete_sites
manage_network
manage_sites
manage_network_users
manage_network_plugins
manage_network_themes
manage_network_options
upload_plugins
upload_themes
upgrade_network
setup_network
Super Admin + Administrator
==========================================
activate_plugins (single site or enabled by network setting)
create_users (single site)
delete_plugins (single site)
delete_themes (single site)
delete_users (single site)
edit_files (single site)
edit_plugins (single site)
edit_theme_options
edit_themes (single site)
edit_users (single site)
export
import
Super Admin + Administrator
=============================================
install_plugins (single site)
install_themes (single site)
list_users
manage_options
promote_users
remove_users
switch_themes
update_core (single site)
update_plugins (single site)
update_themes (single site)
edit_dashboard
customize
delete_site
Super Admin + Administrator + Editor
====================================================
moderate_comments
manage_categories
manage_links
edit_others_posts
edit_pages
edit_others_pages
edit_published_pages
publish_pages
delete_pages
delete_others_pages
delete_published_pages
delete_others_posts
delete_private_posts
edit_private_posts
read_private_posts
delete_private_pages
edit_private_pages
read_private_pages
unfiltered_html (single site)
unfiltered_html
Super Admin + Administrator + Editor + Author
==========================================================
edit_published_posts
upload_files
publish_posts
delete_published_posts
Super Admin + Administrator + Editor + Author + Contributor
==========================================================
edit_posts
delete_posts
Super Admin + Administrator + Editor + Author + Contributor + Subscriber
======================================================================
read
بااستفاده از این فانکشن می تونیم در هر جای وب سایت که نیاز بود نقش کاربر لاگین شده در وردپرس رو دریافت و نمایش بدیم
function wk_get_current_user_roles($user_id= null) { if(!isset($user_id)){ if( is_user_logged_in() ) { $user = wp_get_current_user(); $roles = ( array ) $user->roles; //return $roles; // This returns an array // Use this to return a single value return $roles[0]; } else{ return array(); } } else { // Get the user object. $user = get_userdata( $user_id ); // Get all the user roles as an array. $user_roles = ( array ) $user->roles; return $user_roles[0]; } } echo wk_get_current_user_roles(6)."<br>"; echo wk_get_current_user_roles();