Получение редактируемых ролей (GET_EDITABLE_ROLES) – Все, что вам нужно знать

Получение редактируемых ролей (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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *