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 );