Функция GRANT_SUPER_ADMIN() в WordPress: обзор, использование и примеры

Функция GRANT_SUPER_ADMIN() в WordPress

Эта функция предназначена для предоставления привилегий супер-администратора пользователю в многосайтовом WordPress.

Как работает функция

Функция использует update_site_option(), чтобы обновить настройки сайта управления пользователями.

Хуки функции

Функция включает следующие хуки:

  • grant_super_admin — вызывается перед тем, как пользователю будут предоставлены права супер-администратора.
  • granted_super_admin — вызывается после того, как права были предоставлены.

Возвращаемое значение

Функция возвращает:

  • true — если права успешно предоставлены,
  • false — если произошла ошибка, например, если пользователь уже является супер-администратором или если глобальный массив $super_admins определен.

Использование функции

Чтобы использовать функцию, нужно вызвать её с идентификатором пользователя, которому вы хотите предоставить права супер-администратора.

grant_super_admin( $user_id );

где:

  • $user_id (int) — обязательный параметр, идентификатор пользователя, которому назначаются права супер-администратора.

Примеры использования

Пример 1: Предоставление прав супер-администратора пользователю с ID 5

Рекомендуется вызывать эту функцию только один раз, а не каждый раз при загрузке страницы, так как это изменяет значение параметра.

grant_super_admin( 5 );

Пример 2: Назначение и отзыв прав супер-администратора при активации/деактивации плагина

register_activation_hook( __FILE__, 'myplugin_activate' );
register_deactivation_hook( __FILE__, 'myplugin_deactivate' );

function myplugin_activate() {
    // Предоставляем права
    grant_super_admin( 5 );
}

function myplugin_deactivate() {
    // Отзываем права
    revoke_super_admin( 5 );
}

Заметки

  • Глобальная переменная: $super_admins — это массив, в котором хранятся идентификаторы супер-администраторов.

Изменения в версии

Функция была добавлена в версии 3.0.0 WordPress.

Код функции

Вот как реализована функция в файле wp-includes/capabilities.php:

function grant_super_admin( $user_id ) {
    // Если глобальный массив super_admins определен, ничего делать не нужно.
    if ( isset( $GLOBALS['super_admins'] ) || ! is_multisite() ) {
        return false;
    }

    /**
     * Вызывается перед тем, как пользователю предоставляются права супер-администратора.
     *
     * @param int $user_id ID пользователя, которому предоставляются права.
     */
    do_action( 'grant_super_admin', $user_id );

    // Получаем текущих супер-администраторов.
    $super_admins = get_site_option( 'site_admins', array( 'admin' ) );

    $user = get_userdata( $user_id );
    if ( $user && ! in_array( $user->user_login, $super_admins, true ) ) {
        $super_admins[] = $user->user_login;
        update_site_option( 'site_admins', $super_admins );

        /**
         * Вызывается после предоставления прав супер-администратора.
         *
         * @param int $user_id ID пользователя, которому были предоставлены права.
         */
        do_action( 'granted_super_admin', $user_id );
        return true;
    }
    return false;
}

Связанные функции

Вот некоторые функции, которые могут быть полезны при работе с ролями и возможностями пользователей в WordPress:

  • add_role() — добавляет новую роль.
  • remove_role() — удаляет существующую роль.
  • current_user_can() — проверяет, имеет ли текущий пользователь определенные права.
  • is_super_admin() — проверяет, является ли пользователь супер-администратором.

Эти функции помогут вам управлять правами пользователей и их ролями в WordPress, особенно в многосайтовом режиме.

Leave a Reply

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