Quizás este complemento pueda ayudar: http://wordpress.org/extend/plugins/extended-super-admins/ en combinación con la codificación rígida de la variable global, $ super_admins, específica de cada sitio.
Debería poder establecerse en un gancho a medida que se carga el menú de administración del sitio; todavía no estoy seguro de cómo aplicarlo. Parece una solución prometedora para un problema que tendré que tratar conmigo en breve.
Consulte: http://svn.automattic.com/wordpress/trunk/wp-admin/includes/ms.php y observe la devolución si el global, $ super_admins ya está configurado.
/ **
* Otorga privilegios de super administrador.
* *
* @since 3.0.0
* @param int $ user_id
* /
función grant_super_admin ($ user_id) {
global $ super_admins;
// Si se define la anulación global de super_admins, no hay nada que hacer aquí.
if (isset ($ super_admins))
falso retorno;
do_action ('grant_super_admin', $ user_id);
// Obtenga directamente site_admins en lugar de usar get_super_admins ()
$ super_admins = get_site_option ('site_admins', array ('admin'));
$ usuario = nuevo 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);
volver verdadero;
}
falso retorno;
}
/ **
* Revoca los privilegios de super administrador.
* *
* @since 3.0.0
* @param int $ user_id
* /
función revoke_super_admin ($ user_id) {
global $ super_admins;
// Si se define la anulación global de super_admins, no hay nada que hacer aquí.
if (isset ($ super_admins))
falso retorno;
do_action ('revoke_super_admin', $ user_id);
// Obtenga directamente site_admins en lugar de usar get_super_admins ()
$ super_admins = get_site_option ('site_admins', array ('admin'));
$ usuario = nuevo 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 [$ clave]);
update_site_option ('site_admins', $ super_admins);
do_action ('revoked_super_admin', $ user_id);
volver verdadero;
}
}
falso retorno;
}