editable_rolesхук-фильтрWP 2.8.0

Позволяет изменить список с ролями пользователей сайта, запрашиваемый функцией 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().

Примеры

0

#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_some_roles' );

function hide_some_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 Введена.

Где вызывается хук

get_editable_roles()
editable_roles
wp-admin/includes/user.php 272
$editable_roles = apply_filters( 'editable_roles', $all_roles );

Где используется хук в WordPress

Использование не найдено.