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 користувача, якому потрібно надати права суперадміна.

Приклади

0

#1 Дамо права супер-адміна користувача з ID 5

Рекомендується викликати функцію лише один раз, а не при кожній генерації сторінки. Тому що вона змінює значення опції.

grant_super_admin(5);
0

#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);
}

нотатки

  • Global. Масив. $super_admins

список змін

З версії 3.0.0Введено.

Код grant_super_admin() WP 6.0.2

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 до user is granted Super Admin privileges.
	 *
	 * @ Since 3.0.0
	 *
	 * @param int $user_id ID для користувача, що є для того, щоб прийняти 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, true ) ) {
		$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 для користувача, який був затверджений Super Admin privileges.
		 */
		do_action( 'granted_super_admin', $user_id );
		return true;
	}
	return false;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *