WordPress как на ладони
wordpress jino

grant_super_admin() WP 3.0.0

Устанавливает указанному пользователю права супер администратора.

«Супер-администратор» - это не отдельная роль как Редактор, Администратор, а просто набор прав расширяющих возможности текущей роли.

Если у пользователя была роль ниже «Администратор», например «Редактор», то после установки ему прав супер-админа, он получит возможность управлять всем.

Логины супер-администраторов хранятся в таблице wp_sitemeta в опции site_admins:

$super_admins = get_site_option( 'site_admins' );

grant_super_admin() добавляет логин указанного пользователя в эту опцию.

Супер-админа также можно указать в глобальной переменной $super_admins. Если она установлена, то она имеет приоритет над опцией site_admins и эта функцию становится нерабочей,а все управление супер-админами переходит в глоб. опцию $super_admins

Отмена прав

Чтобы отменить действие этой функции - удалить права супер админа у указанного пользователя, используйте функцию:

revoke_super_admin( $user_id );
Работает на основе: update_site_option()
Хуки из функции:
Возвращает

True/false. Удалось или не удалось сделать из пользователя супер-админа.

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

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

grant_super_admin( $user_id );
$user_id(число) (обязательный)
ID пользователя, которому нужно дать права супер-админа.

Примеры

#1 Дадим права супер-админа пользователя с ID 5

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

grant_super_admin( 5 );

#2 Установим права супер-админа и удалим их при активации/деактиванции плагина

// дадим права
register_activation_hook( __FILE__, 'myplugin_activate' );
function myplugin_activate() {
	grant_super_admin( 5 );
}

// отберем права
register_deactivation_hook( __FILE__, 'myplugin_deactivate' );
function myplugin_deactivate(){
	revoke_super_admin( 5 );
}

Код grant super admin: wp-includes/capabilities.php WP 4.8.2

<?php
function grant_super_admin( $user_id ) {
	// If global super_admins override is defined, there is nothing to do here.
	if ( isset( $GLOBALS['super_admins'] ) || ! is_multisite() ) {
		return false;
	}

	/**
	 * Fires before the user is granted Super Admin privileges.
	 *
	 * @since 3.0.0
	 *
	 * @param int $user_id ID of the user that is about to be granted Super Admin privileges.
	 */
	do_action( 'grant_super_admin', $user_id );

	// Directly fetch site_admins instead of using get_super_admins()
	$super_admins = get_site_option( 'site_admins', array( 'admin' ) );

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

		/**
		 * Fires after the user is granted Super Admin privileges.
		 *
		 * @since 3.0.0
		 *
		 * @param int $user_id ID of the user that was granted Super Admin privileges.
		 */
		do_action( 'granted_super_admin', $user_id );
		return true;
	}
	return false;
}

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

Из метки: Роли и возможности (role capabilities)

Еще из раздела: Мультисайт

grant_super_admin Комментариев нет

Здравствуйте, !

Ваш комментарий