Diferencia entre Admin y Super Admin en la Base de Datos
Estaba revisando la tabla de usuarios y noté que tanto un super administrador (con acceso al panel de red) como un administrador de un sitio de la red tienen el mismo valor en wp_capabilities
: a:1:{s:13:"administrator";b:1;}
y también el mismo wp_user_level
establecido en 10
para ambos.
Por eso me preguntaba: ¿cuál es el valor en la base de datos que diferencia a un super administrador de un administrador normal? No veo ningún otro metadato de usuario relacionado con el nivel de administrador de red.
¿Cuál es la forma correcta de asignar la capacidad de super administrador a un administrador mediante:
- Edición directa en la base de datos.
- Mediante código.
Un administrador es un usuario en el sitio actual con el rol de administrador.
Sin embargo, los super administradores/administradores del sitio se almacenan en una opción del sitio como un array de nombres de usuario.
Por ejemplo, usando SQL en MySQLWorkbench puedes realizar una consulta como esta:
SELECT * FROM wp_sitemeta where meta_key='site_admins';
Para obtener un array PHP serializado. Modificando este valor añadiendo tu nombre de usuario y ID de usuario te convertirá en administrador del sitio.
Si solo estás buscando ver quién es administrador del sitio, tienes estas funciones:
get_site_admins();
is_super_admin();
Si estás en un sitio único en lugar de una multisitio, cualquier usuario con la capacidad delete_users será considerado como super administrador.
Nota que un usuario que es administrador/super-admin no necesita tener un rol en un sitio para realizar acciones de administrador. Esto puede llevar a situaciones extrañas ya que un super admin puede publicar una entrada en un blog del que técnicamente no forma parte, lo que puede ser confuso cuando no aparecen en la lista de usuarios de ese blog ya que no tienen un rol en él.
