WP_Roles{}
Клас дозволяє керувати ролями та можливостями ролей у WordPress.
Опції ролі прості, структура організована за назвою ролі, яка є ключем основного масиву. Можливості ролі перебувають у вкладеному масиві із двох параметрів: name і capabilities:
array ( 'rolename' => array ( 'name' => 'rolename', 'capabilities' => array() ) )
Працює у зв’язці з WP_Role, яка створює об’єкти для властивості $this->role_objects .
Ролі та можливості не генеруються постійно, а записуються в опцію:wp_user_roles
Щоб отримати глобальний екземпляр цього класу, завжди використовуйте допоміжну функцію wp_roles() .
Хуки із класу
Використання
global $wp_roles; $wp_roles = новий WP_Roles(); // або просто $wp_roles = wp_roles();
Властивості класу
-  $roles
 (масив)
- Список ролей та можливостей. Аналогічний властивості $role_objects містить слід. структуру: - array ( 'rolename' => array ( 'name' => 'rolename', 'capabilities' => array() ) ) 
-  $role_objects
 (масив)
- Список об’єктів ролей. Містить таку структуру: - array ( 'rolename' => array ( 'name' => 'rolename', 'capabilities' => array() ) ) 
-  $role_names
 (масив)
- Список лише назв ролей: - [role_names] => Array ( [administrator] => Адміністратор [editor] => Редактор [author] => Автор [contributor] => Учасник [subscriber] => Передплатник ) 
-  $role_key
 (рядок)
- Назва опції, в якій буде список ролей, пр: ‘wp_user_roles’.
-  $use_db
 (логічний)
- Чи використовувати базу даних для отримання та розміщення ролей.
Методи
-  __construct()
 (public)
-  Конструктор. Викликає
 _init() .
 
 
 Повертає: нічого
-  __call(
 $name ,
 $arguments )
 (public)
-  Для зворотної сумісності працювали неіснуючі методи.
 
 
 Повертає: false/різне
-  _init()
 (protected)
- Встановлює властивості об’єкта. Використовує глобальні: $wpdb , $wp_user_roles . - Якщо глобальна $wp_user_roles не встановлена, то як ключ буде використана конструкція “{$wpdb->prefix}user_roles” . 
 Повертає: нічого
-  reinit()
 (public)
-  Пере-ініціалізує об’єкт. Зазвичай викликається функцією
 switch_to_blog() після того, як перемикає wpdb на інший блог у системі MU.
 
 
 Повертає: нічого
-  add_role(
 $role ,
 $display_name ,
 $capabilities =
 array() )
 (public)
-  Додає роль із можливостями до списку. Оновлює список ролей, якщо роль ще не існує.
 
 Можливості визначаються у такому форматі:
 array( ‘read’ => true );
 
 Щоб заборонити зазначену можливість, значення потрібно встановити false:
 array( ‘read’ => false );
 
 Для цього методу є функція обгортка:
 add_role() .
 
 
 Повертає: WP_Role|нічого. WP_Role, якщо роль було додано.
-  remove_role(
 $role )
 (public)
-  Видаляє роль за назвою. Для цього методу є функція обгортка:
 remove_role() .
 
 
 Повертає: нічого
-  add_cap(
 $role ,
 $cap ,
 $grant = true )
 (public)
-  Додає можливість
 $cap до вказаної у
 $role ролі. Логічне
 $grant визначає дозволити чи заборонити зазначену можливість. Детальний опис:
 add_cap()
 
 
 Повертає: нічого
-  remove_cap(
 $role ,
 $cap )
 (public)
-  Видаляє можливість
 $cap у вказаної в
 $role ролі.
 
 
 Повертає: нічого
-  get_role(
 $role )
 (public)
-  Отримує об’єкт вказаної ролі.
 
 
 Повертає: Об’єкт WP_Role, якщо роль знайдена або null, якщо немає ролі.
-  get_names()
 (public)
-  Отримує список найменувань усіх ролей у вигляді масиву.
 
 
 Повертає: масив назв
-  is_role(
 $role )
 (public)
-  Перевіряє чи вказана роль у списку поточних ролей.
 
 
 Повертає: true|false
Приклади
#1 Що містить масив ролей
print_r(wp_roles()); /* WP_Roles Object ( [roles] => Array ( [administrator] => Array ( [name] => Administrator [capabilities] => Array ( [switch_themes] => 1 [edit_themes] => 1 [activate_plugins] => 1 [edit_plugins] => 1 [edit_users] => 1 [edit_files] => 1 [manage_options] => 1 [moderate_comments] => 1 [manage_categories] => 1 [manage_links] => 1 [upload_files] => 1 [import] => 1 [unfiltered_html] => 1 [edit_posts] => 1 [edit_others_posts] => 1 [edit_published_posts] => 1 [publish_posts] => 1 [edit_pages] => 1 [read] => 1 [level_10] => 1 [level_9] => 1 [level_8] => 1 [level_7] => 1 [level_6] => 1 [level_5] => 1 [level_4] => 1 [level_3] => 1 [level_2] => 1 [level_1] => 1 [level_0] => 1 [edit_others_pages] => 1 [edit_published_pages] => 1 [publish_pages] => 1 [delete_pages] => 1 [delete_others_pages] => 1 [delete_published_pages] => 1 [delete_posts] => 1 [delete_others_posts] => 1 [delete_published_posts] => 1 [delete_private_posts] => 1 [edit_private_posts] => 1 [read_private_posts] => 1 [delete_private_pages] => 1 [edit_private_pages] => 1 [read_private_pages] => 1 [delete_users] => 1 [create_users] => 1 [unfiltered_upload] => 1 [edit_dashboard] => 1 [update_plugins] => 1 [delete_plugins] => 1 [install_plugins] => 1 [update_themes] => 1 [install_themes] => 1 [manage_downloads] => 1 [manage_database] => 1 [democracy_admin] => 1 [update_core] => 1 [list_users] => 1 [remove_users] => 1 [add_users] => 1 [promote_users] => 1 [edit_theme_options] => 1 [delete_themes] => 1 [export] => 1 ) ) [editor] => Array ( [name] => Editor [capabilities] => Array ( [moderate_comments] => 1 [manage_categories] => 1 [manage_links] => 1 [upload_files] => 1 [unfiltered_html] => 1 [edit_posts] => 1 [edit_others_posts] => 1 [edit_published_posts] => 1 [publish_posts] => 1 [edit_pages] => 1 [read] => 1 [level_7] => 1 [level_6] => 1 [level_5] => 1 [level_4] => 1 [level_3] => 1 [level_2] => 1 [level_1] => 1 [level_0] => 1 [edit_others_pages] => 1 [edit_published_pages] => 1 [publish_pages] => 1 [delete_pages] => 1 [delete_others_pages] => 1 [delete_published_pages] => 1 [delete_posts] => 1 [delete_others_posts] => 1 [delete_published_posts] => 1 [delete_private_posts] => 1 [edit_private_posts] => 1 [read_private_posts] => 1 [delete_private_pages] => 1 [edit_private_pages] => 1 [read_private_pages] => 1 [democracy_admin] => 1 ) ) [author] => Array ( [name] => Author [capabilities] => Array ( [upload_files] => 1 [edit_posts] => 1 [edit_published_posts] => 1 [publish_posts] => 1 [read] => 1 [level_2] => 1 [level_1] => 1 [level_0] => 1 [delete_posts] => 1 [delete_published_posts] => 1 ) ) [contributor] => Array ( [name] => Contributor [capabilities] => Array ( [edit_posts] => 1 [read] => 1 [level_1] => 1 [level_0] => 1 [delete_posts] => 1 ) ) [subscriber] => Array ( [name] => Subscriber [capabilities] => Array ( [read] => 1 [level_0] => 1 ) ) ) [role_objects] => Array ( [administrator] => WP_Role Object ( [name] => administrator [capabilities] => Array ( [switch_themes] => 1 [edit_themes] => 1 [activate_plugins] => 1 [edit_plugins] => 1 [edit_users] => 1 [edit_files] => 1 [manage_options] => 1 [moderate_comments] => 1 [manage_categories] => 1 [manage_links] => 1 [upload_files] => 1 [import] => 1 [unfiltered_html] => 1 [edit_posts] => 1 [edit_others_posts] => 1 [edit_published_posts] => 1 [publish_posts] => 1 [edit_pages] => 1 [read] => 1 [level_10] => 1 [level_9] => 1 [level_8] => 1 [level_7] => 1 [level_6] => 1 [level_5] => 1 [level_4] => 1 [level_3] => 1 [level_2] => 1 [level_1] => 1 [level_0] => 1 [edit_others_pages] => 1 [edit_published_pages] => 1 [publish_pages] => 1 [delete_pages] => 1 [delete_others_pages] => 1 [delete_published_pages] => 1 [delete_posts] => 1 [delete_others_posts] => 1 [delete_published_posts] => 1 [delete_private_posts] => 1 [edit_private_posts] => 1 [read_private_posts] => 1 [delete_private_pages] => 1 [edit_private_pages] => 1 [read_private_pages] => 1 [delete_users] => 1 [create_users] => 1 [unfiltered_upload] => 1 [edit_dashboard] => 1 [update_plugins] => 1 [delete_plugins] => 1 [install_plugins] => 1 [update_themes] => 1 [install_themes] => 1 [manage_downloads] => 1 [manage_database] => 1 [democracy_admin] => 1 [update_core] => 1 [list_users] => 1 [remove_users] => 1 [add_users] => 1 [promote_users] => 1 [edit_theme_options] => 1 [delete_themes] => 1 [export] => 1 ) ) [editor] => WP_Role Object ( [name] => editor [capabilities] => Array ( [moderate_comments] => 1 [manage_categories] => 1 [manage_links] => 1 [upload_files] => 1 [unfiltered_html] => 1 [edit_posts] => 1 [edit_others_posts] => 1 [edit_published_posts] => 1 [publish_posts] => 1 [edit_pages] => 1 [read] => 1 [level_7] => 1 [level_6] => 1 [level_5] => 1 [level_4] => 1 [level_3] => 1 [level_2] => 1 [level_1] => 1 [level_0] => 1 [edit_others_pages] => 1 [edit_published_pages] => 1 [publish_pages] => 1 [delete_pages] => 1 [delete_others_pages] => 1 [delete_published_pages] => 1 [delete_posts] => 1 [delete_others_posts] => 1 [delete_published_posts] => 1 [delete_private_posts] => 1 [edit_private_posts] => 1 [read_private_posts] => 1 [delete_private_pages] => 1 [edit_private_pages] => 1 [read_private_pages] => 1 [democracy_admin] => 1 ) ) [author] => WP_Role Object ( [name] => author [capabilities] => Array ( [upload_files] => 1 [edit_posts] => 1 [edit_published_posts] => 1 [publish_posts] => 1 [read] => 1 [level_2] => 1 [level_1] => 1 [level_0] => 1 [delete_posts] => 1 [delete_published_posts] => 1 ) ) [contributor] => WP_Role Object ( [name] => contributor [capabilities] => Array ( [edit_posts] => 1 [read] => 1 [level_1] => 1 [level_0] => 1 [delete_posts] => 1 ) ) [subscriber] => WP_Role Object ( [name] => subscriber [capabilities] => Array ( [read] => 1 [level_0] => 1 ) ) ) [role_names] => Array ( [administrator] => Administrator [editor] => Editor [author] => Author [contributor] => Contributor [subscriber] => Subscriber ) [role_key] => wp_user_roles [use_db] => 1 ) */
#2 Створимо нову роль: “Основний учасник”:
$result = add_role(
	'basic_contributor', 'Основний учасник',
	array(
		'read' => true, // true дозволяє цю можливість
		'edit_posts' => true, // true дозволяє редагувати пости
		'delete_posts' => false, // false забороняє видаляти пости
	)
);
if ( null !== $result ) {
	echo 'Ура! Нова роль створена!';
}
else {
	echo 'Ой... Така роль вже існує.';
}#3 Видалимо роль “передплатник” (subscriber):
register_deactivation_hook( __FILE__, function(){
	remove_role( 'subscriber');
} );
список змін
| З версії 2.0.0 | Введено. | 
