Получение редактируемых ролей (GET_EDITABLE_ROLES)
Описание функции
Функция get_editable_roles()
позволяет получить отфильтрованный список ролей пользователей, которые текущий пользователь может редактировать. Это простая функция, которая помогает фильтровать список ролей в объекте $wp_roles
, чтобы плагины могли исключать неподходящие роли в зависимости от ситуации или пользователя, который выполняет редактирование. Без этого фильтра любой пользователь с правами edit_users
мог бы изменить других пользователей и сделать их администраторами, даже если они являются лишь редакторами или авторами. Этот фильтр позволяет администраторам делегировать управление пользователями.
Используется в:
wp_roles()
wp_dropdown_roles()
Время выполнения функции
- 1 раз — 0.000358 сек (быстро)
- 50000 раз — 8.56 сек (быстро)
Хуки функции
editable_roles
Возврат значения
Функция возвращает массив, содержащий информацию о ролях.
Применение
Чтобы использовать эту функцию, просто вызовите:
get_editable_roles();
Примеры
Пример 1 — Что возвращает функция
Вот как выглядит пример данных, возвращаемых на чистой установке WordPress:
Array
(
[administrator] => Array
(
[name] => Administrator
[capabilities] => Array
(
[switch_themes] => 1
[edit_themes] => 1
[activate_plugins] => 1
[edit_plugins] => 1
[edit_users] => 1
[edit_files] => 1
[manage_options] => 1
[moderate_comments] => 1
[manage_categories] => 1
[manage_links] => 1
[upload_files] => 1
[import] => 1
[unfiltered_html] => 1
[edit_posts] => 1
[edit_others_posts] => 1
[edit_published_posts] => 1
[publish_posts] => 1
[edit_pages] => 1
[read] => 1
...
)
)
[editor] => Array
(
[name] => Editor
[capabilities] => Array
(
[moderate_comments] => 1
...
)
)
...
)
Пример 2 — Отображение списка ролей в выпадающем списке
Ниже представлен код функции wp_dropdown_roles()
, которая использует текущую функцию как основу:
function wp_dropdown_roles( $selected = '' ) {
$r = '';
$editable_roles = array_reverse( get_editable_roles() );
foreach ( $editable_roles as $role => $details ) {
$name = translate_user_role( $details['name'] );
// Предвыбор указанной роли
if ( $selected == $role ) {
$r .= "nt";
} else {
$r .= "nt";
}
}
echo $r;
}
Изменения
Функция get_editable_roles()
была введена в версии 2.8.0.
Код функции get_editable_roles()
function get_editable_roles() {
$all_roles = wp_roles()->roles;
/**
* Фильтрует список редактируемых ролей.
*
* @since 2.8.0
*
* @param array[] $all_roles Массив массивов с информацией о ролях.
*/
$editable_roles = apply_filters( 'editable_roles', $all_roles );
return $editable_roles;
}
Похожие функции
add_role()
author_can()
current_user_can()
get_role()
remove_role()
wp_roles()
wp_dropdown_users()
Эти функции могут помочь вам в управлении ролями и правами пользователей в WordPress.