Возможно, этот плагин может помочь: http://wordpress.org/extend/plugins/extended-super-admins/ в сочетании с жестким кодированием глобальной переменной $ super_admins, специфичной для каждого сайта.
Это должно быть в состоянии быть установленным в ловушку, поскольку меню администратора сайта загружено - не совсем уверенный, как принудить это все же. Кажется, это многообещающее решение проблемы, с которой мне придется в ближайшее время разобраться.
Смотрите: http://svn.automattic.com/wordpress/trunk/wp-admin/includes/ms.php и отметьте возврат, если глобальный, $ super_admins уже установлен.
/ **
* Предоставляет привилегии супер администратора.
*
* @since 3.0.0
* @param int $ user_id
* /
function grant_super_admin ($ user_id) {
global $ super_admins;
// Если определено глобальное переопределение super_admins, тут делать нечего.
if (isset ($ super_admins))
вернуть ложь;
do_action ('grant_super_admin', $ user_id);
// Прямая выборка site_admins вместо использования get_super_admins ()
$ super_admins = get_site_option ('site_admins', массив ('admin'));
$ user = new WP_User ($ user_id);
if (! in_array ($ user-> user_login, $ super_admins)) {
$ super_admins [] = $ user-> user_login;
update_site_option ('site_admins', $ super_admins);
do_action ('grant_super_admin', $ user_id);
вернуть истину;
}
вернуть ложь;
}
/ **
* Отменяет привилегии супер администратора.
*
* @since 3.0.0
* @param int $ user_id
* /
function revoke_super_admin ($ user_id) {
global $ super_admins;
// Если определено глобальное переопределение super_admins, тут делать нечего.
if (isset ($ super_admins))
вернуть ложь;
do_action ('revoke_super_admin', $ user_id);
// Прямая выборка site_admins вместо использования get_super_admins ()
$ super_admins = get_site_option ('site_admins', массив ('admin'));
$ user = new WP_User ($ user_id);
if ($ user-> user_email! = get_site_option ('admin_email'))) {
if (false! == ($ key = array_search ($ user-> user_login, $ super_admins))) {
unset ($ super_admins [$ key]);
update_site_option ('site_admins', $ super_admins);
do_action ('revoked_super_admin', $ user_id);
вернуть истину;
}
}
вернуть ложь;
}