Добавление новой роли и проверка на права конкретного пользователя.
Добавление новой роли для основных прав
'read' => true,
'edit_posts' => true,
'delete_posts' => true,
'publish_posts' => true,
]);
Выше указаны на все права, а лишь некоторые из них, для примера.
Добавление новой роли для созданных прав
При создании произвольных типов записей создаются новые права для них. Допустим у нас есть одно из таких созданных типов записей. И мы создали роль модератор.
'read_moderator' => true,
'edit_posts_moderator' => true,
'delete_posts_moderator' => true,
'publish_posts_moderator' => true,
]);
Как добавить права, когда роль уже имеется
Если у нас уже есть роль, то добавить в неё новый права можно таким образом:
$caps = [
'read' => true,
'edit_posts' => true,
'delete_posts' => true,
'publish_posts' => true,
];
foreach ($roles as $role) {
$role = get_role($role);
foreach ($caps as $cap) {
$role->add_cap($cap);
}
}
Или таким:
$moderator->add_cap( 'read' );
$moderator->add_cap( 'edit_posts' );
$moderator->add_cap( 'delete_posts' );
$moderator->add_cap( 'publish_posts' );
$moderator->add_cap('level_5');
$moderator->add_cap('level_4');
$moderator->add_cap('level_3');
$moderator->add_cap('level_2');
$moderator->add_cap('level_1');
$moderator->add_cap('level_0');
Как проверить роль пользователя
Если надо определить права текущего пользователя:
if ( is_object( $data) ) {
$current_user_caps = $data->allcaps;
echo '[cc]' . print_r( $current_user_caps, true ) . '
‘;
}[/cc]
Если надо определить права конкретного пользователя, то меняем get_current_user_id() на нужный ID пользователя.
Будет выведено что-то вроде:
(
[edit_posts] => 1
[read] => 1
)