wp_ensure_editable_role()
Проверяет, может ли текущий пользователь назначить указанную роль другому пользователю.
Функция получает название роли и сверяет его со списком ролей, доступных текущему пользователю для редактирования. Если роль нельзя назначить, выполнение скрипта сразу останавливается через wp_die() и показывается сообщение об ошибке.
Функция не проверяет существование роли напрямую. Она проверяет роль именно среди ролей, которые текущему пользователю разрешено редактировать. Поэтому роль может существовать в WordPress, но всё равно быть недоступной для назначения.
Функция находится в файле wp-admin/includes/ms.php, поэтому обычно используется в админке.
Хуков нет.
Возвращает
null.
void— ничего не возвращает, если роль можно назначить.void— если роль нельзя назначить, завершает выполнение черезwp_die().
Использование
wp_ensure_editable_role( $role );
- $role(string) (обязательный)
Название роли, которую пользователь пытается назначить.
Например:
subscriber,editor,administrator.
Примеры
#1 Проверка роли перед назначением пользователю
Перед обновлением роли можно проверить, разрешено ли текущему пользователю назначать такую роль.
$role = 'editor'; wp_ensure_editable_role( $role ); $user_id = 25; $user = new WP_User( $user_id ); $user->set_role( $role );
Если текущий пользователь не может назначить роль editor, выполнение будет остановлено.
#2 Проверка роли из данных формы
Пример показывает, как проверить роль, переданную из формы в админке.
if ( isset( $_POST['role'] ) ) {
$role = sanitize_key( $_POST['role'] );
wp_ensure_editable_role( $role );
$user_id = 25;
$user = new WP_User( $user_id );
$user->set_role( $role );
}
Список изменений
| С версии 6.8.0 | Введена. |
Код wp_ensure_editable_role() wp ensure editable role WP 6.9.4
function wp_ensure_editable_role( $role ) {
$roles = get_editable_roles();
if ( ! isset( $roles[ $role ] ) ) {
wp_die( __( 'Sorry, you are not allowed to give users that role.' ), 403 );
}
}