editable_roles
Позволяет изменить список с ролями пользователей сайта, запрашиваемый функцией editable_roles().
Использование
add_filter( 'editable_roles', 'wp_kama_editable_roles_filter' );
/**
* Function for `editable_roles` filter-hook.
*
* @param array[] $all_roles Array of arrays containing role information.
*
* @return array[]
*/
function wp_kama_editable_roles_filter( $all_roles ){
// filter...
return $all_roles;
}
- $all_roles(массив)
Массив массивов, содержащих информацию о ролях. Где ключи массива — это название роли (administrator, editor и т.д.), а значения — отображаемое имя роли и её возможности.
Пример обрабатываемых данных смотрите в описании функции editable_roles().
Примеры
#1 Исключим из списка ролей конкретные роли
Пусть мы создали несколько дополнительных ролей:
add_role( 'project_expert', 'Эксперт' ); add_role( 'project_moderator', 'Модератор' ); add_role( 'project_tracker', 'Трекер' ); add_role( 'project_tracker_fake', 'Трекер (неподтверждённый)' ); add_role( 'project_leader', 'Руководитель' );
Это упрощенный пример регистрации ролей, в нём опущен момент присвоения ролям возможностей. Как правильно создавать роли в WordPress смотрите на add_role().
Теперь при работе с пользователями будут выводиться такие списки:
Если у вас индивидуальный проект и дефолтные роли WordPress не используются, то они в этих списках только мешаются - скроем их.
add_filter( 'editable_roles', 'hide_unused_roles' );
function hide_unused_roles( $all_roles ) {
unset( $all_roles['editor'] );
unset( $all_roles['author'] );
unset( $all_roles['contributor'] );
unset( $all_roles['subscriber'] );
return $all_roles;
}
Получим список без этих ролей:
В этом примере мы лишь скрыли из списка определенные роли, но они остались без изменений и другой, с ними связанный, функционал остался прежним.
Список изменений
| С версии 2.8.0 | Введена. |
Где вызывается хук
$editable_roles = apply_filters( 'editable_roles', $all_roles );



