Los roles y capacidades del usuario de WordPress te dan la posibilidad de controlar lo que otros usuarios pueden o no pueden hacer en tu sitio. Puedes usarlos para administrar las acciones de los usuarios, como escribir y editar mensajes, crear nuevas páginas, moderar comentarios, instalar plugins, añadir nuevos usuarios y mucho más.

Comprender los roles y permisos de los usuarios es esencial para administrar cualquier sitio de WordPress. Por ejemplo, si estás construyendo un sitio para un cliente, no querrás que edite o cambie el tema instalado. De la misma manera, no es aconsejable dejar que los escritores de un blog de varios autores instalen o quiten los plugins.

Aprender a administrar los roles de usuario de WordPress de manera inteligente te ayudará a agilizar tu flujo de trabajo, a mantener tu sitio seguro y a obtener el control definitivo de tu sitio.

En esta extensa guía, aprenderás acerca de los roles de usuario de WordPress, las diversas capacidades que ofrece WordPress, cómo editar los roles de usuario existentes, cómo administrar a los usuarios en múltiples sitios y crear nuevos roles con un nuevo conjunto de capacidades.

¿Emocionado? ¡Vamos a sumergirnos!

¿Cuáles son los roles y capacidades de los usuarios de WordPress?

Los papeles y las capacidades son el pan de cada día de la gestión de acceso de los usuarios en WordPress. Para entender cuáles son los roles de los usuarios en WordPress, primero necesitas saber cuáles son las capacidades.

WordPress define cualquier acción que un usuario puede realizar como una Capacidad. Aquí hay algunos ejemplos de las capacidades disponibles en WordPress y cómo están referenciadas en su código:

La mayoría de las capacidades se explican por su nombre. WordPress tiene más de 70 capacidades de código duro incorporadas en su núcleo.

Un rol es un conjunto de capacidades que se pueden asignar a un usuario. Cada usuario de WordPress necesita que se le asigne un rol. Un usuario sólo puede realizar las acciones que su rol le otorga.

Un 'Rol' es una colección de 'Capacidades'...
Un ‘Rol’ es una colección de ‘Capacidades’…

En el gráfico de arriba, cualquier usuario con el rol 1 puede leer los mensajes, pero no puede editarlos. Los usuarios con la rol 2 pueden leer y editar publicaciones, pero no pueden publicarlas. Cualquier usuario con la rol 3 puede leer, editar y publicar publicaciones, pero no puede eliminarlas, a diferencia de los usuarios con la rol 4, que sí pueden eliminarlas.

El panel de 'Agregar nuevo usuario' en el tablero de WordPress
El panel de ‘Agregar nuevo usuario’ en el panel de control de WordPress

WordPress utiliza muchas de sus capacidades nativas para definir sus funciones de usuario predeterminadas. Por ejemplo, otorga a los administradores y editores la capacidad de publish_pages, pero no las asigna a los suscriptores y colaboradores.

El panel de 'Usuarios' en el tablero de WordPress
El panel de ‘Usuarios’ en el panel de control de WordPress

Como mínimo, cada usuario de WordPress tiene un nombre de usuario, una contraseña, una dirección de correo electrónico y una función.

phpMyAdmin mostrando donde la base de datos de WP almacena las capacidades stores the capabilities
phpMyAdmin mostrando donde la base de datos de WP almacena las capacidades stores the capabilities

WordPress almacena todas sus capacidades basadas en roles en su base de datos en la tabla wp_options bajo la opción wp_user_roles serializada. La clase central WP_Roles se utiliza para definir cómo almacenar los roles y las capacidades en la base de datos.

La clase WP_Roles

WordPress implementa roles y capacidades con la API de Roles de Usuario, la mayoría de las cuales se basan en la clase central WP_Roles. Puedes encontrar su fuente en el archivo wp-includes/class-wp-roles.php.

Si miras en la base de datos, encontrarás que los roles están dentro de un arreglo con sus nombres de roles definidos. La clave rolename almacena el nombre del rol de usuario como un valor de la clave del name y todas las capacidades en una matriz separada como un valor de la clave de la capabilty.

array (
     'rolename' => array (
         'name' => 'rolename',
         'capabilities' => array()
     )
)

La WP_Roles class define muchos métodos. Puedes llamarlos en cualquier parte del código para interactuar con la API de Roles de Usuario.

Nota: WordPress incluye otra clase principal llamada WP_Role (note el singular «Role»). Se usa para extender la API de Roles de Usuario.

Cuando descompongas el valor de la clave de wp_user_roles, se verá algo como esto:

array (
  'administrator' => 
  array (
    'name' => 'Administrator',
    'capabilities' => 
    array (
      'switch_themes' => true,
      'edit_themes' => true,
      'activate_plugins' => true,
      // [...rest of the lines cut off for brevity...]
    ),
  ),
  'editor' => 
  array (
    'name' => 'Editor',
    'capabilities' => 
    array (
      'moderate_comments' => true,
      'manage_categories' => true,
      'manage_links' => true,
      // [...rest of the lines cut off for brevity...]
    ),
  ),
  'author' => 
  array (
    'name' => 'Author',
    'capabilities' => 
    array (
      'upload_files' => true,
      'edit_posts' => true,
      'edit_published_posts' => true,
      // [...rest of the lines cut off for brevity...]
    ),
  ),
  'contributor' => 
  array (
    'name' => 'Contributor',
    'capabilities' => 
    array (
      'edit_posts' => true,
      'read' => true,
      // [...rest of the lines cut off for brevity...]
    ),
  ),
  'subscriber' => 
  array (
    'name' => 'Subscriber',
    'capabilities' => 
    array (
      'read' => true,
      'level_0' => true,
    ),
  ),
)

Es un conjunto multidimensional en el que a cada función se le asigna un nombre y se le otorga un conjunto de capacidades. De manera similar, WordPress almacena las capacidades basadas en el usuario en la tabla wp_usermeta con el nombre de la meta-llave wp_capabilities.

Nota: El prefijo wp_ puede ser diferente en su configuración. Depende del valor de la variable global $table_prefix en el archivo wp-config.php de tu sitio.

Tabla de roles vs. capacidades

El cuadro de 'Roles vs Capacidades' en el Codex de WordPress
El cuadro de ‘Roles vs Capacidades’ en el Codex de WordPress

El códice de WordPress incluye una simple tabla de capacidad vs. rol, aunque no es tan intuitiva. Resume todas las acciones que los roles de usuario predeterminados pueden tomar tanto en configuraciones de WordPress de un solo sitio como de varios sitios. Hay una pausa después de un número determinado de capacidades para facilitarle la distinción entre capacidades de alto y bajo nivel.

Para una mejor representación de todos los papeles y capacidades de WordPress de un vistazo, puedes ver esta tabla excelente de Exygy.

Capacidades relacionadas con los bloques reutilizables de Gutenberg

El editor de bloques de Gutenberg de WordPress introdujo una asombrosa característica llamada Bloques Reutilizables. Te permite guardar un bloque entero (o varios bloques) como plantilla y utilizarlo en cualquier otro lugar de tu sitio.

Añadiendo "Bloques reutilizables" en WordPress el nuevo editor de bloques de Gutenberg
Añadiendo «Bloques reutilizables» en WordPress el nuevo editor de bloques de Gutenberg

En consecuencia, WordPress también introdujo las siguientes nuevas capacidades relacionadas con los bloques reutilizables:

  • Crear bloques reutilizables
  • Editar bloques reutilizables
  • Leer los bloques reutilizables
  • Eliminar los bloques reutilizables

Las capacidades enumeradas anteriormente funcionan de manera similar a las capacidades relacionadas con los puestos. Un administrador o un editor tiene acceso a todas las capacidades relacionadas con los bloques reutilizables, mientras que un autor sólo puede editar o eliminar los bloques reutilizables creados por ellos. Los colaboradores sólo pueden leer los bloques reutilizables.

Capacidad especial: Carga no filtrada

La carga no filtrada es una capacidad especial que no está asignada a ningún rol de usuario por defecto, incluyendo Administrador o Superadministrador. Permite a un usuario subir archivos con cualquier extensión (por ejemplo, SVG o PSD), no sólo los que están en la lista blanca de WordPress.

Nota: Puedes obtener una lista de los tipos de mímica y las extensiones de archivo soportadas por WordPress usando la función wp_get_mime_types().

Para habilitar esta capacidad, necesitas agregar el siguiente fragmento de código a tu archivo wp-config.php. Define la constante antes de la línea que te pide que dejes de editar.

define( 'ALLOW_UNFILTERED_UPLOADS', true );

Después de definir esta constante, puedes darle a cualquier usuario en un sitio único de WordPress la capacidad de subir sin filtrar. Sin embargo, en una instalación multisitio sólo un Super Admin puede tener esta capacidad.

Por ejemplo, si quieres asignar la capacidad de carga_no filtrada a un Editor, puedes añadir el siguiente código en cualquier parte de tu código de WordPress (lo ideal es que lo ejecutes sólo en la activación del tema/plugin):

<?php

  $role = get_role( 'editor' );
  $role->add_cap( 'unfiltered_upload' );

?>

Más adelante en este artículo hablaremos de cómo agregar o personalizar las capacidades de todos los roles de usuario o de usuarios específicos.

Capacidades primitivas vs. Metacapacidades

Hay principalmente dos tipos de capacidades en WordPress:

  • Capacidades primitivas: Estas capacidades se conceden a funciones particulares. Los usuarios con estos roles heredan las capacidades primitivas automáticamente.
  • Meta Capacidades: Estas capacidades no se conceden a ningún papel por defecto. WordPress comprueba un determinado objeto en su código y base de datos, como un post, una página, un usuario o cualquier taxonomía, y si la lógica se comprueba, «mapea» una meta capacidad a una o más capacidades primitivas.

Por ejemplo, WordPress otorga a los autores la capacidad de edit_posts para sus propios posts para que puedan editarlos. Sin embargo, esta capacidad no les permite editar los mensajes de otros usuarios. Aquí es donde las meta-capacidades ayudan.

WordPress utiliza la función map_meta_cap() para devolver un conjunto de capacidades primitivas ligadas a un objeto específico. Luego las compara con el objeto del usuario para comprobar si el usuario puede editar el mensaje.

Algunos otros ejemplos de meta capacidades son read_post, delete_post, remove_user, y read_post. Los veremos con más detalle en la sección de capacidades personalizadas más abajo.

Los seis roles de usuario de WordPress predeterminados

WordPress incluye seis funciones de usuario predefinidas. El primer usuario de una instalación de WordPress obtiene el rol de Administrador de forma predeterminada (o el rol de Super Administrador con instalaciones de WordPress Multisite).

Desde que WordPress comenzó como una plataforma de blogs antes de convertirse en un CMS completo, define la mayoría de sus funciones de usuario para publicar contenido en la web. Sus otros roles de usuario predefinidos son Editor, Autor, Colaborador y Suscriptor.

Los roles de usuario predeterminados de WordPress apilados en orden de capacidades
Los roles de usuario predeterminados de WordPress apilados en orden de capacidades

Imagina los roles de usuario de WordPress por defecto como una colección de cilindros apilados que representan varias capacidades. El cilindro más grande tiene la mayoría de las capacidades, el segundo más grande tiene la segunda mayoría de las capacidades, y el cilindro más pequeño tiene la menor cantidad de capacidades.

No deberías considerar un papel como superior a otro. Más bien, piense en los roles como el establecimiento de las responsabilidades de un usuario dentro del sitio.

Un rol de usuario nunca es superior, ni es inferior, define precisamente lo que se pretende.

Ahora veamos detalladamente todos los roles de usuario predefinidos de WordPress.

Administrador

The 'Administrator' role dashboard in WordPress
El panel de roles de ‘Administrador’ en WordPress

WordPress asigna al primer usuario de cualquier instalación de un solo sitio el papel de Administrador. Se sienta en la parte superior de todos los otros roles de usuario y tiene acceso a todas las capacidades definidas por WordPress. Los usuarios con el rol de Administrador pueden realizar acciones como:

  • Crear y eliminar usuarios
  • Instalar y administrar plugins y temas
  • Editar plugins, temas, archivos y código
Sólo los administradores pueden añadir nuevos usuarios en WordPress
Sólo los administradores pueden añadir nuevos usuarios en WordPress

Dado que un administrador es el papel más poderoso, debes asignarlo sólo a aquellos en los que confías. Lo ideal sería que hubiera un solo administrador por cada sitio.

El papel de Administrador en una red de WordPress Multisite se define de forma un poco diferente, aunque se llama igual. En una red Multisitio, el rol de Administrador no goza de algunas capacidades que sí tiene en un sitio único de WP, como la instalación de temas y plugins. WordPress reserva esas capacidades para el rol de Super Administrador.

Editor

El panel de roles del 'Editor' en WordPress
El panel de roles del ‘Editor’ en WordPress

Un editor se encarga de administrar el contenido de un sitio de WordPress. Pueden crear, modificar, publicar o eliminar entradas y páginas, incluso las creadas por otros usuarios. Algunas de sus capacidades incluyen:

  • Eliminar los mensajes y páginas publicadas
  • Comentarios moderados
  • Administrar los enlaces y las categorías
  • Editar los mensajes y páginas de otros usuarios

Los editores no pueden tomar acciones de administración del sitio como la instalación de plugins y temas. Su principal responsabilidad es supervisar el trabajo de otros autores y colaboradores o ser un equipo de contenido de una sola persona.

Consejo: Si administras un sitio de WordPress por tu cuenta, puedes crear un usuario alternativo para ti con el rol de editor. De esta manera puedes mantener tus tareas de administración y publicación separadas. Tu cuenta de administrador está a salvo de los hackers, incluso si tu cuenta de editor se ve comprometida.

Autor

El panel de roles del 'Autor' en WordPress
El panel de roles del ‘Autor’ en WordPress

Como su nombre lo indica, cualquier usuario con un rol de Autor puede crear, editar y publicar mensajes. También se puede subir archivos multimedia y eliminar mensajes propios, pero no puedes crear páginas ni editar los mensajes de otros usuarios.

Los autores pueden añadir etiquetas a sus publicaciones y asignarlas a categorías existentes, pero no pueden crear nuevas categorías. Al igual que con los editores, no tienen acceso a ninguna tarea administrativa como configuraciones, plugins y temas.

Nota: Un autor puede borrar sus mensajes incluso después de que se publiquen. Si le asignas a alguien el papel de Autor, asegúrate de que tiene un control total sobre sus publicaciones, incluso de que las elimine.

Colaborador

The 'Contributor' role dashboard in WordPress
El panel de roles de ‘Colaborador’ en WordPress

El papel de colaborador es una versión ligera del papel de autor. Un usuario con un rol de colaborador puede crear sus propios mensajes, borrar borradores de sus mensajes, pero no puede publicar los mensajes.

Pueden guardar borradores de sus mensajes o enviarlos a un editor o a un administrador para que los revise y los publique. Y una vez que publican el post, un Colaborador no puede borrar sus posts. En cambio, los Autores pueden borrar sus publicaciones.

El papel de colaborador es ideal para los nuevos autores y colaboradores invitados.

Suscriptor

The 'Subscriber' role dashboard in WordPress
El panel de roles de ‘Suscriptor’ en WordPress

El papel del Suscriptor se encuentra en el escalón más bajo de la clasificación de capacidades. Un usuario con un rol de Suscriptor puede administrar su perfil y tiene acceso a leer todos los mensajes del sitio. Eso es más o menos así!

Puede restringir el contenido sólo a los usuarios que hayan iniciado sesión, incluyendo a los suscriptores
Puedes restringir el contenido sólo a los usuarios que hayan iniciado sesión, incluyendo a los suscriptores

Normalmente, todo el mundo tiene acceso a leer el contenido de un sitio de WordPress. Sin embargo, en los sitios de suscripción o membresía, sólo los usuarios que se han registrado pueden ver el contenido. Un usuario con un papel de suscriptor puede leer los artículos en estos casos.

Super Admin

El panel de roles de 'Super Admin' en la red de WordPress Multisite
El panel de roles de ‘Super Admin’ en la red de WordPress Multisite

El papel de Super Admin sólo está disponible en las instalaciones de WordPress Multisite. Este rol reemplaza a los Administradores de un solo sitio dentro de la red Multisitio y da acceso a todas las capacidades de administración de alto nivel.

Algunas de las capacidades de «Multisitio» disponibles para los Superadministradores son:

  • Crear, administrar y eliminar sitios de la red
  • Administrar los usuarios de la red, los plugins, los temas y las opciones
  • Actualizar todos los sitios de la red Multisitio
  • Establecer una red multisitio
  • Asignar administradores a los sitios individuales de la red
El panel de "Sitios" en una red de WordPress Multisitio
El panel de «Sitios» en una red de WordPress Multisitio
El panel de 'Temas' en el tablero de Super Admin
El panel de ‘Temas’ en el panel de Super Admin

En una red multisitio, sólo el Super Admin puede instalar temas y habilitarlos en toda la red. Los administradores de los sitios de red individuales sólo pueden ver y activar los temas que ya están instalados por el Super Admin.

Por ejemplo, he instalado el tema gratuito de Astra en mi red, pero no lo he habilitado para la red. Por lo tanto, los administradores de los subsitios individuales de una red no pueden verlo en su panel de temas.

Los administradores de los subsitios de la red no pueden instalar nuevos temas
Los administradores de los subsitios de la red no pueden instalar nuevos temas

En la captura de pantalla anterior, también puedes notar que el menú de Plugins no es accesible para los administradores de sitios en una red. A diferencia de lo que ocurre con los Temas, un Súper Administrador puede cambiar la configuración de la red para permitir que los Administradores instalen y activen los plugins en sus sitios.

El Super Admin puede dar a los administradores la capacidad de gestionar los plugins
El Super Admin puede dar a los administradores la capacidad de gestionar los plugins

 

El Super Admin también puede 'Activar la Red' plugins
El Super Admin también puede ‘Activar la Red’ plugins

Un superadministrador también puede activar los plugins de Network Activate para asegurarse de que son forzados en todos los sitios de la red. Los Administradores de Sitios no pueden desactivar los plugins activados por red. Esta configuración es ideal para forzar los plugins esenciales a través de la red.

La pantalla de administración de la red

El panel de administración de la red sirve como un centro para que el Super Admin administre las capacidades de la red de WordPress Multisite. Sólo es accesible a los usuarios con el rol de Super Admin después de crear una red.

El tablero de administración de la red incluye opciones únicas para administrar la red
El panel de administración de la red incluye opciones únicas para administrar la red
1. Panel de mandos

El panel de administración de la red es el centro de información detallada sobre los sitios de la red. Da acceso a todos los ajustes de la red.

2. Sitios
The 'Sites' panel in a WordPress Multisite network
El panel de ‘Sitios’ en un panel de administración de la red

Se puede utilizar el Panel de Sitios para administrar los diversos sitios que forman parte de la red Multisitio. Los sitios listados aquí serán un subdirectorio o un subdominio dependiendo de cómo haya configurado la red de Multisitios de WordPress.

A partir de aquí, puede añadir nuevos sitios a la red o eliminar los existentes de la red.

También se puede acceder a la información sobre los sitios, los usuarios, los temas y la configuración general de la red desde aquí. El primer sitio que creas es el sitio principal de la red. La red hereda todos sus ajustes de las opciones del primer sitio.

Añadiendo nuevos sitios a la red de sitios múltiples de WordPress
Añadiendo nuevos sitios a la red de sitios múltiples de WordPress

Al hacer clic en el enlace o el botón Agregar un nuevo sitio te llevará a la pantalla anterior donde podrás agregar un nuevo sitio a tu red de sitios múltiples. Si no tienes a nadie más en mente para ser el administrador del nuevo sitio, puedes asignarte a ti mismo como el administrador también.

3. Usuarios
El panel de 'Usuarios' en el tablero de administración de la red
El panel de ‘Usuarios’ en el panel de administración de la red

La pantalla de usuarios en el panel de administración de la red le permite administrar los usuarios y agregar nuevos usuarios a su red de sitios múltiples. Sólo el Super Admin puede agregar usuarios a la red, pero un Super Admin puede modificar la configuración de la red para permitir a los Administradores del sitio agregar nuevos usuarios sólo a sus propios sitios.

4. Temas
El panel de 'Temas' en el tablero de administración de la red
El panel de ‘Temas’ en el tablero de administración de la red

La pantalla de temas te permite gestionar los temas accesibles para los administradores del sitio. No te permite activar o desactivar los temas que utiliza cualquier sitio, sino que sólo establece los temas que puede utilizar cualquier sitio.

Si se deshabilita un tema que está en uso en cualquier lugar de la red, permanecerá activo en ese sitio incluso después de haberlo deshabilitado. Pero si los sitios utilizan otro tema, el tema desactivado no aparecerá en el panel de temas del sitio de la red.

Puedes consultar el artículo de WordPress Multisite de Kinsta para aprender a trabajar con temas y plugins en tu red. También puedes usar el Editor de Temas para editar tus archivos de temas dentro del propio tablero.

5. Plugins
El panel de 'Plugins' en el panel de administración de la red
El panel de ‘Plugins’ en el panel de administración de la red

La pantalla de plugins permite a los usuarios añadir o eliminar plugins en la red. Una vez añadidos, puedes activar los plugins desde el panel de control de un sitio. También puedes activar los plugins desde aquí para forzar el uso de los plugins en todos los sitios de la red.

Por defecto, el administrador de un sitio no puede acceder al menú de plugins en su tablero. Un Super Administrador puede habilitarlo para ellos modificando la Configuración de la Red.

Habilitar la administración de plugins para todos los administradores de subsitios
Habilitar la administración de plugins para todos los administradores de subsitios

Nota: No todos los plugins de WordPress soportan redes de sitios múltiples. Necesitas leer la documentación del plugin para confirmar si funcionarán en configuraciones Multisite.

6. Ajustes
The 'Network Settings' panel in Network Admin dashboard
El panel de «Configuración de la red» en el panel de administración de la red

Se puede establecer y cambiar los ajustes para toda la red en la Pantalla de ajustes de red. La configuración predeterminada de la red se basa en el primer sitio que creó al configurar la red. Algunos ajustes de red que puede cambiar aquí son:

  • Ajustes operativos
  • Configuración del registro
  • Nueva configuración del sitio
  • Subir la configuración
  • Ajustes de idioma
  • Ajustes del menú

Aquí también puede acceder a la información de configuración la red que utilizó cuando creó la red. Puede consultar la pantalla de configuración de la administración de la red en WordPress Codex para obtener un resumen detallado de todas las opciones de configuración disponibles.

7. Updates
El panel de 'Updates' en el tablero de administración de la red
El panel de ‘Updates’ en el tablero de administración de la red

Puedes controlar el proceso de actualización tanto para la red como para los sitios individuales desde la pantalla de actualizaciones. El panel de Actualizaciones te mostrará cualquier actualización disponible para el núcleo de WordPress, los temas y los plugins. Una vez que hayas instalado la última versión de WordPress, puedes aplicarla a todos los sitios de la red a través de la pantalla de Actualizaciones de la Red.

El panel de 'Actualización de la Red' en el panel de Administración de la Red
El panel de ‘Actualización de la Red’ en el panel de Administración de la Red

Nota: En una instalación de WordPress de un solo sitio, el Administrador es esencialmente un Súper Administrador ya que tiene acceso a todas las capacidades de administración.

Puedes personalizar los roles de usuario y también crear tus propios roles personalizados utilizando las capacidades predefinidas de WordPress.

Ventajas de las funciones y capacidades del usuario

El sistema de funciones y capacidades es la columna vertebral de la gestión de usuarios de WordPress. Aquí están algunos de sus muchos beneficios:

  • Los roles de usuario ayudan a gestionar todos los usuarios de tu sitio de forma más eficiente. Incluso si tienes docenas de usuarios en tu sitio trabajando desde distintas partes del mundo, puedes supervisarlos fácilmente otorgando los roles adecuados a cada uno de ellos.
  • Al restringir a los usuarios a capacidades específicas, le ayuda a mantener tu sitio más seguro. Por ejemplo, los autores no pueden borrar los mensajes de otros, los editores no pueden cambiar los temas o instalar plugins, y los suscriptores sólo pueden acceder a sus propios perfiles.
  • Los plugins de WordPress pueden comprobar si un usuario tiene ciertas capacidades y, en base a ello, realizar una determinada acción. La función current_user_can() WordPress ayuda a realizar esta comprobación. Por ejemplo, un plugin de seguridad puede mostrar tu panel de opciones sólo al administrador pero aún así mostrar advertencias de seguridad a todos los usuarios.
  • Puedes editar los roles de los usuarios para delegar algunas de tus responsabilidades de rol a otros usuarios para liberar tu tiempo. Digamos que tu sitio está atrayendo muchos comentarios. En tales casos, puedes permitir que un autor de confianza se encargue de moderar los comentarios. Seguirás teniendo el poder final como administrador, pero puedes compartir algunas de tus responsabilidades dependiendo de la necesidad.
  • Puedes utilizar las comprobaciones de capacidad para mostrar publicaciones y páginas privadas que sólo pueden ver ciertos roles de usuario. Esto constituye la base de los sitios de afiliación.
  • Puedes mostrar u ocultar elementos del frontend en tu sitio (por ejemplo, elementos de menú, widgets) dependiendo del rol del usuario.
  • Puedes crear tipos de mensajes personalizados con capacidades personalizadas y conceder o denegar esas capacidades para cada función de usuario. Del mismo modo, también puede definir capacidades personalizadas para permitir que sólo determinados roles tengan acceso a la configuración de su plugin o tema.

¿Cómo gestionar eficazmente los roles de usuario de WordPress

Conocer todos los roles y capacidades de los usuarios es esencial, pero también hay que entender cómo manejarlos eficientemente en tus sitios. Aunque no hay dos sitios de WordPress que sean exactamente iguales, hay algunas reglas básicas que puedes seguir para aprovechar al máximo los roles de usuario y las capacidades de WordPress.

Dar un acceso mínimo a cada usuario

Asigna a cada usuario de tu sitio sólo el nivel de acceso que necesita. Siempre es mejor dar menos permisos que demasiados. Asegurar los roles de los usuarios de WordPress es crítico para mantener su sitio y su contenido seguro.

Asignar cuidadosamente los roles de usuario a cada usuario
Asignar cuidadosamente los roles de usuario a cada usuario

Limitar el número de administradores y editores

Por regla general, cada sitio debe tener un solo administrador y sólo debe hacer cambios en el núcleo del sitio. WordPress recomienda que se adhiera al «principio de mínimos privilegios«, que sugiere que sólo debe dar a un usuario los privilegios esenciales para realizar tu trabajo deseado.

Por ejemplo, es mejor utilizar un usuario de nivel de editor para gestionar el contenido del sitio, en lugar de utilizar un administrador. Si tienes más de un Editor en tu sitio, entonces asegúrate de que puede confiar en ellos con sus amplias capacidades.

Asigna el papel de Autor a los creadores de contenido en los que puede confiar, ya que pueden publicar y eliminar sus propios mensajes. Los roles de colaborador son más adecuados para los nuevos creadores de contenido y para las publicaciones de invitados.

Personalizar los roles de los usuarios en función de las necesidades

Los roles de usuario predeterminados de WordPress son útiles, pero pueden no ser adecuados para todos los casos de uso. Por ejemplo, dar a sus autores la capacidad de moderar los comentarios.

Afortunadamente, WordPress nos permite personalizar los roles de los usuarios o crear nuevos roles según nuestras necesidades. Puedes hacerlo manualmente a través del código o con la ayuda de los plugins de roles de usuario de WordPress. Cubriremos ambos métodos en este artículo.

Gestión de usuarios en la red de sitios múltiples de WordPress

WordPress Multisite incluye configuraciones únicas para la gestión de usuarios. Algunos de ellos son simples de comprender, mientras que otros no.

Explorémoslos a fondo.

Configuración del registro de la red de sitios múltiples

Fuera de la caja, sólo un Super Admin puede crear nuevos usuarios y sitios en la red. Sin embargo, pueden permitir que los usuarios registren cuentas en la red como suscriptores de los subsitios.

Para habilitarlo, ve a Administración de la red > Configuración de la red > Configuración de registro > Permitir nuevos registros, y habilite la opción «Las cuentas de usuario pueden registrarse».

Allowing users to register an account on your network
Permitir a los usuarios registrar una cuenta en su red

Aquí, también puedes permitir a los usuarios registrados crear nuevos sitios en tu red. Puedes marcar esta opción si deseas restringir la capacidad de crear sitios sólo para los usuarios que hayas configurado.

La última opción permite a los usuarios registrar una cuenta así como crear un sitio en tu red. A los usuarios que crean un sitio en su red se les da el papel de Administrador de su subsitio.

Una cuenta de usuario para acceder a toda la red

Cuando se crea una cuenta de usuario en su red, o cuando un usuario registra una cuenta en cualquiera de los sitios de su red, puede navegar a cualquier sitio dentro de la red después de iniciar sesión. Imagina esto como una red social como Facebook o Reddit donde puede crear una cuenta y acceder a todos los grupos o subgrupos con el mismo perfil de usuario.

Este es uno de los mayores beneficios de usar WordPress Multisite. Permite a tus usuarios acceder a todos tus sitios registrando una sola cuenta.

Concesión de privilegios adicionales a los administradores del sitio

Puedes permitir que los administradores de los sitios agreguen usuarios a sus propios sitios marcando la opción Agregar nuevos usuarios.

Permitir a los administradores del sitio agregar nuevos usuarios a su subsitio
Permitir a los administradores del sitio agregar nuevos usuarios a su subsitio

Como se mencionó anteriormente, puede conceder a los administradores de los sitios acceso a la gestión de los plugins en sus subsitios yendo a Configuración de la red > Configuración de los menús y marcando la opción Habilitar los menús de administración > Plugins.

Registro de usuario a nivel subsitio

Las instalaciones multisitio de WordPress sólo permiten registros de usuarios para toda la red de forma predeterminada. No hay ninguna opción para permitir registros de usuario para un solo subsitio. Puedes cambiar este comportamiento utilizando el complemento de Network Subsite User Registration.

'Network Subsite User Registration' plugin
‘Network Subsite User Registration’ plugin

Este plugin permite a los administradores del sitio habilitar registros de usuarios locales con acceso restringido sólo a su sitio. Los nuevos usuarios asumirán el rol de suscriptor por defecto, pero se puede cambiarlo modificando la configuración del plugin.

Permitir a cualquiera registrar una cuenta sólo en sus subsitios
Permitir a cualquiera registrar una cuenta sólo en sus subsitios

Asignar el mismo usuario a múltiples subsitios

Puede asignar el mismo usuario a varios sitios de su red con roles únicos. Cuando el usuario se conecta al panel de sus sitios, puede acceder al tablero de todos sus sitios a través de la pantalla Mis sitios.

Puedes asignar un usuario a varios sitios en una red multi-sitio de WordPress
Puedes asignar un usuario a varios sitios en una red multi-sitio de WordPress

Otorgando a otros usuarios súper privilegios de administración

Un superadministrador también puede compartir sus privilegios con otros usuarios. Debes habilitar esta opción con precaución y sólo asignarla a usuarios en los que puedas confiar.

Conceder a otros usuarios los privilegios de Super Admin para la red
Conceder a otros usuarios los privilegios de Super Admin para la red

Comprender todas las configuraciones de administración de usuarios en WordPress Multisite te ayudará a administrar mejor tu red. Para encontrar otros plugins útiles para WordPress Multisite, puedes explorarlos en el artículo de WordPress repo o en el artículo recomendado por Kinsta sobre plugins de WordPress Multisite.

¿Cómo personalizar los roles de usuario de WordPress existentes?

Puedes añadir capacidades a las funciones de usuario existentes para aumentar su nivel de acceso. Por ejemplo, puedes dar a los editores el poder de administrar los plugins. O quizás quieras que los Colaboradores moderen los comentarios de sus propios posts. Aprendamos a hacer eso.

Nota: Si no te gusta jugar con el código, puedes saltarte el método manual e ir directamente a la sección de plugins de funciones y capacidades de usuario que aparece a continuación. O simplemente contratar a un desarrollador de WordPress.

¿Cómo añadir capacidades a un rol de usuario?

Puedes añadir una capacidad a un rol de usuario o a cualquier usuario específico usando la función add_cap() WordPress. Usaré un plugin personalizado llamado Personalizar Rol de Usuario para mostrar cómo usar esta función para darle al rol de Editor el poder de administrar plugins.

<?php

/*
Plugin Name:  Customize User Role
Version:  1.0
Description:  Demonstrating how to customize WordPress User Roles.
Author:  Salman Ravoof
Author URI:  https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  customize-user-role
*/

WordPress recomienda ejecutar esta función en la activación de plugins o temas, ya que los ajustes que añade se almacenan en la base de datos en la tabla wp_options bajo el campo wp_user_roles. Es ineficiente ejecutar esta función cada vez que se carga cualquier página, ya que las tablas de la base de datos seguirán siendo sobrescritas en cada carga de página.

Como estoy usando un plugin, usaré la función register_activation_hook() para engancharme a la acción que se ejecuta al activar un plugin. Hay muchas maneras de hacer esto, pero estoy usando una implementación robusta basada en clases para asegurarme de que no haya conflictos.

// this code runs only during plugin activation and never again
function sal_customize_user_role() {
    require_once plugin_dir_path( __FILE__ ).'includes/class-sal-customize-user-role.php';   
    Sal_Customize_User_Role::activate();
}
register_activation_hook( __FILE__, 'sal_customize_user_role' );

El código anterior se ejecuta sólo una vez durante la activación del plugin. La función enganchada sal_customize_user_role hace referencia a una clase personalizada llamada Sal_Customize_User_Role.

He definido esta clase en un archivo separado llamado class-sal-customize-user-role.php y la he colocado dentro de la carpeta raíz de mi plugin dentro de una subcarpeta llamada includes, pero puedes nombrarla como quieras.

<?php

class Sal_Customize_User_Role {
    public static function activate() {
        // get the Editor role's object from WP_Role class
        $editor = get_role( 'editor' );

        // a list of plugin-related capabilities to add to the Editor role
        $caps = array(
                  'install_plugins',
                  'activate_plugins',
                  'edit_plugins',
                  'delete_plugins' 
        ); 

        // add all the capabilities by looping through them
        foreach ( $caps as $cap ) {
            $editor->add_cap( $cap );
        }
    }
}

Aquí hay una explicación detallada del código anterior:

  • Empieza definiendo la clase y su función a la que has hecho referencia en el archivo principal del plugin.
  • La función get_role( ‘editor’ ) recupera el objeto de rol Editor de la clase core WP_Role y lo asigna a la variable $editor.
  • La gestión de los plugins requiere cuatro capacidades: install_plugins, activate_plugins, edit_plugins y delete_plugins. Pero la función add_cap() acepta sólo un parámetro. Por lo tanto, necesitamos incluir todas las capacidades dentro de un array. Definir la matriz $caps para contener todas estas capacidades. Si sólo se añade una capacidad, entonces no hay necesidad de definir un array.
  • La función add_cap( $cap ) añade todas las capacidades definidas en la matriz $caps haciendo un bucle a través de todas ellas usando la función foreach () PHP.

Guarda todos tus archivos de plugin y luego activa el plugin desde tu panel de administración. Ahora entremos en el dashboard del Editor para ver los cambios.

Los editores pueden ahora manejar los plugins desde su tablero de mandos
Los editores pueden ahora manejar los plugins desde su tablero de mandos

Después de agregar las capacidades relacionadas con los plugins a su rol de usuario, los editores pueden ver el menú de plugins en su menú de administración.

 

La pantalla de "Añadir Plugins" en el panel de control del editor
La pantalla de «Añadir Plugins» en el panel de control del editor

Puedes comprobar las capacidades asignadas a cada rol de usuario viendo el valor de la clave wp_user_roles almacenado en la tabla wp_options de la base de datos de tu sitio WordPress.

Aquí están las capacidades que encontré asignadas al rol de Editor:

'editor' => 
  array (
    'name' => 'Editor',
    'capabilities' => 
    array (
      'moderate_comments' => true,
      'manage_categories' => true,
      // [...lines cut off for brevity...]
      'install_plugins' => true,
      'activate_plugins' => true,
      'edit_plugins' => true,
    ),
  ),

Fíjense en las últimas tres líneas que dan a los editores la capacidad de manejar los plugins.

Si deseas eliminar estas capacidades, puede engancharse a la función register_deactivation_hook() y utilizar la función remove_cap() para eliminar las capacidades de desactivación de los plugins, tal y como añadimos estas capacidades en la activación de los plugins.

Ahora que has aprendido a añadir capacidades a un rol de usuario, es hora de aprender a quitar capacidades de un rol de usuario.

Nota: También puedes engancharte a la acción after_switch_theme para disparar este código durante la activación del tema (y/o tema infantil). Aquí, debes incluir el código en el archivo functions.php de tu tema o tema secundario (recomendado).

¿Cómo eliminar las capacidades de un rol de usuario?

A veces, puede que quieras eliminar una capacidad de un rol de usuario. Puede ejecutar la función remove_cap() para eliminar una capacidad de un rol o de un usuario específico. Por ejemplo, es una excelente idea eliminar la capacidad delete_published_posts del rol de usuario Author.

¡Acabemos con esto!

Voy a crear un nuevo plugin personalizado llamado Personalizar el rol de autor para empezar. Al igual que antes, ejecutaré este código sólo una vez enganchándolo a la función register_activation_hook().

<?php

/*
Plugin Name:  Customize Author Role
Version:  1.0
Description:  Demonstrating how to customize WordPress Author Role.
Author:  Salman Ravoof
Author URI:  https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  customize-author-role
*/

// this code runs only during plugin activation and never again
function sal_customize_author_role() {
    require_once plugin_dir_path( __FILE__ ).'includes/class-sal-customize-author-role.php';
    Sal_Customize_Author_Role::activate();
}
register_activation_hook( __FILE__, 'sal_customize_author_role' );

A continuación, definiré la clase Sal_Customize_Author_Role dentro del archivo class-sal-customize-author-role.php. He referenciado ambos recursos en el archivo principal del plugin de arriba.

<?php
class Sal_Customize_Author_Role { 
    public static function activate() {
        // get the Editor role's object from WP_Role class
        $author = get_role( 'author' );
 
        // remove the capability to delete published posts from an Author role
        $author->remove_cap( 'delete_published_posts' );
    }
}

La función remove_cap( 'delete_published_posts' ) eliminará la capacidad de eliminar los posts publicados del rol de Autor.

Los autores pueden borrar sus publicaciones por defecto
Los autores pueden borrar sus publicaciones por defecto

Es hora de guardar todos los archivos del plugin y luego activar el plugin. Ahora, entra en el panel de control del autor y mira los cambios.

Los autores ya no pueden borrar sus publicaciones
Los autores ya no pueden borrar sus publicaciones

La opción Basura ya no está disponible para los artículos publicados por los autores. Sin embargo, aún pueden borrar sus publicaciones no publicadas que tengan el estado de Borrador o Pendiente.

Los autores aún pueden borrar sus publicaciones no publicadas
Los autores aún pueden borrar sus publicaciones no publicadas

Si quieres deshabilitar incluso esta capacidad, entonces también necesitas eliminar la capacidad de delete_posts del rol de Autor.

Adición o eliminación de capacidades para usuarios específicos

Si quieres añadir capacidades a un usuario específico, en lugar de un rol de usuario completo, entonces puedes usar la función de clase WP_User::add_cap() para añadir la capacidad.

// get the user object by their ID
$user = new WP_User( $user_id ); 

// add the capability to the specific user
$user->add_cap( $cap );

Puedes usar la función get_user_by() para recuperar el ID de cualquier usuario usando su correo electrónico, nombre de usuario de inicio de sesión o slug.

Del mismo modo, se pueden eliminar las capacidades de un usuario específico utilizando la función de clase WP_User::remove_cap().

// get the user object by their ID
$user = new WP_User( $user_id );

// add the capability to the specific user
$user->add_cap( $cap );

Como antes, ejecuta estas funciones sólo en la activación de plugins o temas para mantener tu código optimizado.

Nota: Tanto add_cap() como remove_cap() son métodos objeto de la clase WP_Role. No puedes llamarlos directamente en tu código. Necesitas acceder a ellos usando la función get_role() o la variable global $wp_roles.

Duplicar un rol de usuario

Puede crear un nuevo rol de usuario clonando todas las capacidades de un rol de usuario existente. Así es como puedes hacerlo:

add_role( 'clone', 'Clone', get_role( 'administrator' )->capabilities );

En el ejemplo anterior, estoy creando un nuevo rol llamado Clon con las mismas capacidades de un Administrador. Ejecutando este código en el tema o la activación del plugin se asegurará de que el rol clonado se añada sólo una vez.

¿Cómo crear roles de usuario personalizados en WordPress?

Las capacidades de edición de los roles de usuario predeterminados es una forma rápida de personalizarlos. Pero si buscas editar muchas capacidades de un rol, entonces es una buena idea crear un nuevo rol de usuario personalizado en conjunto. De esta manera puedes establecer las capacidades exactas que quieres para cada rol en tu sitio.

Para crear un rol de usuario personalizado, necesitas usar la función add_role(). Acepta tres parámetros.

add_role(  $role, $display_name, $capabilities );

Los dos primeros parámetros deben ser cadenas (y necesarios) para que la función funcione. Definen el nombre de la nueva función personalizada y el nombre para mostrar, respectivamente. El último parámetro es opcional y debería ser un array. Se puede utilizar para asignar todas las capacidades de la nueva función.

Vamos a crear un rol de usuario personalizado llamado Administrador de la Comunidad que puede moderar los comentarios y editar los mensajes en todo el sitio. Así es como puedes hacerlo:

<?php

/*
Plugin Name:  Add Community Manager Role
Version:  1.0
Description:  Add a Custom User Role called 'Community Manager'
Author:  Salman Ravoof
Author URI:  https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  add-community-manager-role
*/

// this code will run only once on plugin activation and never again
function add_community_manager_role() {
    add_role(
         'community_manager',
         __('Community Manager', 'add-community-manager-role'), 
         array( 
              'read' => true,
              'moderate_comments' => true,
              'edit_posts' => true,
              'edit_other_posts' => true,
              'edit_published_posts' => true
         )
    );
}
register_activation_hook( __FILE__, 'add_community_manager_role' );

Como antes, la función add_role() se ejecuta una sola vez al activar el plugin y nunca más. Guarda el archivo y activa el plugin en tu panel de administración. Ahora deberías poder asignar el rol de Administrador de la Comunidad tanto a los usuarios nuevos como a los existentes.

Asignación de la función de usuario personalizada a los nuevos usuarios
Asignación de la función de usuario personalizada a los nuevos usuarios

 

Asignación de la función de usuario personalizado a los usuarios existentes
Asignación de la función de usuario personalizado a los usuarios existentes

También puedes verificar las capacidades asignadas a este nuevo rol verificando el valor del campo wp_user_roles bajo la tabla wp_options dentro de tu base de datos. Esto es lo que encontré en la base de datos de mi sitio:

array (
  'administrator' => 
    // [...]
  'editor' => 
    // [...]
  'author' => 
    // [...]
  'contributor' => 
    // [...]
  'subscriber' => 
    // [...]
  'community_manager' => 
  array (
    'name' => 'Community Manager',
    'capabilities' => 
    array (
      'read' => true,
      'moderate_comments' => true,
      'edit_posts' => true,
      'edit_other_posts' => true,
      'edit_published_posts' => true,
    ),
  ),
)  

Al final aparece el nuevo papel que acabamos de añadir con todas sus capacidades. Puedes editar este rol más adelante añadiendo o quitando capacidades.

Probando un nuevo papel de usuario

Antes de asignar el nuevo rol de usuario a cualquier usuario real, es esencial probar si funciona como se pretende. Aquí tienes una lista de control que puedes seguir para probarlo:

  1. Crear una cuenta de usuario de prueba y asignarle el nuevo rol de usuario.
  2. Entra con el usuario de prueba y asegúrate de que todas sus capacidades funcionan como se pretende. Por ejemplo, si le ha concedido la capacidad de editar los mensajes publicados, entonces vaya a cualquier mensaje y compruebe si puede editarlo. Cuantas más capacidades le hayas asignado al rol, más tiempo pasarás probándolas todas.
  3. A continuación, intenta visitar cualquier enlace de administración de nivel superior directamente en tu navegador. Probé esto visitando la pantalla de configuración de WordPress directamente, y como era de esperar, WordPress no me dejó entrar.
    El mensaje de «acceso denegado» mostrado por WordPress
  4. Borra el usuario de la prueba después de que hayas terminado de probarla.

¡Eso es más o menos así! Ahora puedes asignar el nuevo rol a los usuarios de tu sitio.

Puedes usar los plugins User Switching o View Admin As para intercambiar entre diferentes cuentas de usuario en tu sitio con un solo clic. Son súper prácticos para probar las capacidades de múltiples usuarios. He cubierto ambos en detalle más adelante en este artículo.

Creación de funciones de usuario personalizadas en WordPress Multisite

WordPress Multisite maneja los roles de los usuarios de manera un poco diferente a las instalaciones de WordPress de un solo sitio. Mientras que puedes usar la función add_role() para crear un rol de usuario personalizado como lo hicimos antes, el nuevo rol sólo funcionará en el sitio principal de la red (el primer sitio que creaste). No se propagará a todos los subsitios de la red.

Para asegurar que el código de la función de devolución de llamada se ejecute en cada sitio de tu red, debes forzar su ejecución haciendo un bucle en todos los sitios de su red uno por uno. Para este ejemplo, crearé un nuevo rol de usuario llamado Administrador de Plugins que tendrá todas las capacidades para administrar los plugins.

<?php

/*
Plugin Name:  Add Plugin Manager Role
Version:  1.0
Description:  Add a custom user role named Plugin Manager in a WordPress Multisite Installation
Author:  Salman Ravoof
Author URI:  https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  add-plugin-manager-role
*/

/* 
make the code run on every site in the network
when the plugin is Network Activated
*/
function add_plugin_manager_role( $network_wide ) {
 
     if ( is_multisite() && $network_wide ) { 
         // run the code for all sites in a Multisite network
         foreach ( get_sites(['fields'=>'ids']) as $blog_id ) {
             switch_to_blog( $blog_id );
                 add_role(
                      'plugin_manager',
                      __('Plugin Manager', 'add-plugin-manager-role'),
                      array( 
                           'install_plugins' => true,
                           'activate_plugins' => true,
                           'edit_plugins' => true,
                           'delete_plugins' => true
                      )
                 );
             }
             restore_current_blog();
     }
     else {
         add_role(
              'plugin_manager',
              __('Plugin Manager', 'add-plugin-manager-role'),
              array( 
                   'install_plugins' => true,
                   'activate_plugins' => true,
                   'edit_plugins' => true,
                   'delete_plugins' => true
              )
         );
     }
}
register_activation_hook( __FILE__, 'add_plugin_manager_role' );

Repasemos el código anterior en detalle:

  • Primero, te enganchas a la acción de activación del plugin con la función register_activation_hook() y pasas a la función de devolución de llamada. Aquí, la función callback es add_plugin_manager_role().
  • Luego defines tu función de devolución de llamada y pasas un solo argumento junto con él llamado $network_wide.
  • El parámetro $network_wide es un bool que devuelve true si has activado el plugin para toda la red. Devuelve false si lo has activado sólo para el sitio actual. Además, sólo es aplicable para instalaciones de varios sitios y su valor por defecto es false.
  • La declaración condicional is_multisite() && $network_wide comprueba si el plugin está ‘activado por red’ en una instalación multisitio. Si es true, ejecuta el código incluido en la declaración If. Si es false, se ejecuta el código de la sentencia else.
  • La función get_sites(['fields'=>'ids']) devuelve una lista de todos los ID de los sitios de la red. Usando la función foreach() PHP, hace un bucle a través de todos ellos para ejecutar el código en cada sitio de la red de forma individual.
  • La función switch_to_blog( $blog_id ) dirige las siguientes líneas de código a ejecutar para el subsitio con $blog_id ID. Como WordPress comenzó principalmente como una plataforma de blogs, puedes reemplazar la palabra ‘blog’ por ‘sitio’ para entender mejor su uso aquí.
  • A continuación, se utiliza la función add_role() para crear el rol de usuario personalizado con sus capacidades. Esto sigue las mismas convenciones de código que se explicaron anteriormente en este artículo.
  • Antes de terminar el bucle, defina la función restore_current_blog() para asegurarse de que restaura el estado del sitio conmutado a su estado original.
  • El código de la declaración else es una alternativa para asegurar la compatibilidad con las instalaciones de un solo sitio.

Guarda el archivo del plugin y ve a la pantalla Network Admin > Plugins para ‘Network Activate’ tu plugin personalizado. Después de eso, dirígete a la pestaña de Usuarios en cualquiera de las pantallas de edición de tu sitio para comprobar si el nuevo rol de Administrador de Plugins está disponible.

Cambio de la función de los usuarios actuales del sitio a la nueva función de usuario
Cambio de la función de los usuarios actuales del sitio a la nueva función de usuario

 

Asignación del rol de usuario personalizado a nuevos usuarios para un subsitio
Asignación del rol de usuario personalizado a nuevos usuarios para un subsitio

También confirmé que esta nueva función de usuario está disponible en otros sitios de la red. Funciona perfectamente.

Asignación de la nueva función de usuario a los usuarios existentes en los subsitios
Asignación de la nueva función de usuario a los usuarios existentes en los subsitios

También puede verificar la nueva función personalizada y sus capacidades mirando la base de datos de tu sitio. Sin embargo, a diferencia de las instalaciones de un solo sitio, WordPress Multisite crea una tabla wp_options separada para cada subsitio.

Donde los roles de usuario se almacenan en una base de datos de WordPress Multisite
Donde los roles de usuario se almacenan en una base de datos de WordPress Multisite

Puede sencontrar las tablas específicas de subsitio listadas como wp_2_options, wp_3_options y wp_4_options. Asimismo, los roles y capacidades se almacenan en sus respectivos campos denominados wp_2_user_roles, wp_3_user_roles y wp_4_user_roles.

Has definido cómo crear un rol de usuario personalizado en todos los sitios de tu red, pero ¿qué pasa con los sitios que se crearán en el futuro? Para asegurarte de que añades este rol de usuario personalizado a cada nuevo sitio creado en la red, puedes añadir el siguiente código a tu plugin:

// run the code once again when a new site is created
function add_custom_user_role_new_site( $blog_id ) { 
    // check whether the plugin is active for the network
    if ( is_plugin_active_for_network( 'add-custom-user-role/add-custom-user-role.php' ) ) {
        switch_to_blog( $blog_id );
        add_role(
             'plugin_manager',
             __('Plugin Manager', 'add-plugin-manager-role'),
             array( 
                  'install_plugins' => true,
                  'activate_plugins' => true,
                  'edit_plugins' => true,
                  'delete_plugins' => true
             )
        );
        restore_current_blog();
    }
}
add_action( 'wpmu_new_blog', 'add_custom_user_role_new_site' );
  • La acción wpmu_new_blog se dispara cuando alguien crea un nuevo sitio en una red multisitio. Puedes engancharte a esta acción con tu función de devolución de llamada para añadir el rol de usuario personalizado.
  • La función is_plugin_active_for_network() comprueba si el plugin está activo para toda la red y devuelve un valor bool. Acepta la ruta del archivo del plugin como argumento.
  • El resto del código sigue la misma lógica que antes. Se cambia al nuevo sitio usando su parámetro $blog_id, se crea su rol personalizado usando la función add_role(), y luego se vuelve al sitio actual usando la función restore_current_blog().

¿Cómo eliminar los roles de usuario de WordPress?

Puedes eliminar cualquier rol de usuario de WordPress usando la función remove_role( ). Acepta un solo argumento, que es el nombre del rol. Por ejemplo, puedes eliminar el rol de colaborador ejecutando el siguiente código en cualquier lugar de tu sitio:

remove_role( 'contributor' );

A diferencia de la función add_role() que seguirá actualizando la base de datos si no se ejecuta en un plugin o en la activación de un tema, la función remove_role() se ejecuta sólo si el rol existe. Dado que cualquier rol pasado como argumento es eliminado la primera vez que se ejecuta, no hay que preocuparse de dónde se ejecuta esta función.

Sin embargo, para evitar futuros conflictos, elimina el código después de que el papel sea eliminado de la base de datos.

Creación de capacidades personalizadas en WordPress

La edición de los roles de usuario existentes y la creación de nuevos roles personalizados utilizando las capacidades incorporadas de WordPress es suficiente para la mayoría de los casos de uso, pero es posible que desees definir nuevas capacidades para las características introducidas por su código personalizado (utilizando un plugin o un tema).

Luego puedes utilizar esas capacidades personalizadas para definir nuevos papeles o añadirlos a los ya existentes.

Por ejemplo, WooCommerce añade capacidades y funciones adicionales junto con sus amplias características de comercio electrónico. Algunas de las capacidades que añade son:

  • Permitir la administración de la configuración de WooCommerce
  • Crear y editar productos
  • Ver los informes de WooCommerce

Usando estas capacidades, añade dos nuevos roles de usuario: Cliente y Gerente de la tienda.

WooCommerce añade sus propios roles de usuario
WooCommerce añade sus propios roles de usuario

El rol de Cliente es casi similar al rol de Suscriptor, excepto que los usuarios con el rol de Cliente pueden editar la información de su cuenta y ver los pedidos actuales/anteriores. El rol de Administrador de tienda incluye todas las capacidades de un Editor, además de que también se les conceden todas las capacidades de WooCommerce.

Otros plugins que introducen capacidades y/o roles personalizados incluyen The Events Calendar, Visual Portfolio, WPML y WP ERP.

Si te profundizas en la documentación de todos estos plugins, se observará que vinculan casi todas sus capacidades personalizadas a los tipos de postales personalizados definidos por ellos. En el caso de WooCommerce, son los tipos de postales personalizadas de Productos y Pedidos, mientras que en otros son Eventos, Portafolios, Traducciones y Clientes respectivamente.

Aprendamos a crear capacidades personalizadas atadas a un tipo de poste personalizado.

Primero, configura un plugin y registra el tipo de correo personalizado que quieras. En mi ejemplo, estoy registrando un nuevo tipo de mensaje personalizado llamado «Historias«.

<?php

/*
Plugin Name:    Custom Post Type and Capabilities
Version:        1.0
Description:    Register a custom post type and define custom capabilities tied into it.
Author:         Salman Ravoof
Author URI:     https://www.salmanravoof.com/
License:        GPLv2 or later
License URI:    https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:    custom-post-type-capabilities
*/

// register a custom post type, in this case it's called "story" //
function cpt_story_init() {
    $labels = array(
        'name'                  => _x( 'Stories', 'custom-post-type-capabilities' ),
        'singular_name'         => _x( 'Story', 'custom-post-type-capabilities' ),
        'menu_name'             => _x( 'Stories', 'Admin Menu text', 'custom-post-type-capabilities' ),
        'name_admin_bar'        => _x( 'Story', 'Add New on Toolbar', 'custom-post-type-capabilities' ),
        'add_new'               => __( 'Add New', 'custom-post-type-capabilities' ),
        'add_new_item'          => __( 'Add New Story', 'custom-post-type-capabilities' ),
        'new_item'              => __( 'New Story', 'custom-post-type-capabilities' ),
        'edit_item'             => __( 'Edit Story', 'custom-post-type-capabilities' ),
        'view_item'             => __( 'View Story', 'custom-post-type-capabilities' ),
        'all_items'             => __( 'All Stories', 'custom-post-type-capabilities' ),
        'search_items'          => __( 'Search Stories', 'custom-post-type-capabilities' ),
        'parent_item_colon'     => __( 'Parent Stories:', 'custom-post-type-capabilities' ),
        'not_found'             => __( 'No stories found.', 'custom-post-type-capabilities' ),
        'not_found_in_trash'    => __( 'No stories found in Trash.', 'custom-post-type-capabilities' ),
        'featured_image'        => _x( 'Story Cover Image', 'custom-post-type-capabilities' ),
        'set_featured_image'    => _x( 'Set cover image', 'custom-post-type-capabilities' ),
        'remove_featured_image' => _x( 'Remove cover image', 'custom-post-type-capabilities' ),
        'use_featured_image'    => _x( 'Use as cover image', 'custom-post-type-capabilities' ),
        'archives'              => _x( 'Story archives', 'custom-post-type-capabilities' ),
        'insert_into_item'      => _x( 'Insert into story', 'custom-post-type-capabilities' ),
        'uploaded_to_this_item' => _x( 'Uploaded to this story', 'custom-post-type-capabilities' ),
        'filter_items_list'     => _x( 'Filter stories list', 'custom-post-type-capabilities' ),
        'items_list_navigation' => _x( 'Stories list navigation', 'custom-post-type-capabilities' ),
        'items_list'            => _x( 'Stories list', 'custom-post-type-capabilities' ),
    );
 
    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'menu_icon'          => 'dashicons-book',   
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'story' ),
        'capability_type'    => array ( 'story', 'stories' ),
        'map_meta_cap'       => true,
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 6,
        'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
        'show_in_rest'       => true,
    );
 
    register_post_type( 'story', $args );
}
 
add_action( 'init', 'cpt_story_init' );

Aquí hay un desglose del guión anterior:

  • Utiliza la función register_post_type() para registrar su tipo de puesto personalizado. Puedes engancharte a la acción init para ejecutar esta función.
  • La función register_post_type() acepta dos argumentos. El primero es el nombre del tipo de puesto personalizado y el segundo es un array que contiene todos los argumentos para registrar el tipo de puesto.
  • La variable $args contiene todos los argumentos que pasarás a la función register_post_type(). Uno de sus argumentos (‘labels’) es en sí mismo un array definido separadamente como la variable $label.
  • Fíjate en el argumento capability_type’ => ‘post’. Es el tipo de capacidad predeterminado utilizado por WordPress para construir las capacidades de lectura, edición y borrado para el tipo de post personalizado.
  • Para crear sus capacidades personalizadas, debes reemplazar el valor del argumento capability_type con el nombre preferido de sus capacidades personalizadas. Acepta una cadena o un array como argumento. El array es útil si el plural de su capacidad personalizada no sigue la sintaxis estándar del sufijo (por ejemplo, libro/libros vs. cuento/cuentos).
  • También puedes usar el argumento de capabilities para nombrar las nuevas capacidades de forma diferente a lo que hace WordPress automáticamente.
  • Debes asignar tus capacidades personalizadas a las capacidades primitivas de WordPress. Establezca el argumento map_meta_cap en true para que WordPress sepa que necesita mapear las capacidades personalizadas como se sugiere.

A continuación, debes añadir las capacidades personalizadas a los roles que quieres dar acceso al tipo de publicación personalizada de Stories. Para este ejemplo, estoy otorgando la capacidad a los roles de Administrador y Editor.

// add the custom capabilities to the desired user roles 
$roles = array( 'editor','administrator' );

foreach( $roles as $the_role ) {      
    
    $role = get_role($the_role);
            
            $role->add_cap( 'read' );
            $role->add_cap( 'read_story');
            $role->add_cap( 'read_private_stories' );
            $role->add_cap( 'edit_story' );
            $role->add_cap( 'edit_stories' );
            $role->add_cap( 'edit_others_stories' );
            $role->add_cap( 'edit_published_stories' );
            $role->add_cap( 'publish_stories' );
            $role->add_cap( 'delete_others_stories' );
            $role->add_cap( 'delete_private_stories' );
            $role->add_cap( 'delete_published_stories' );
}

Guarda el archivo y luego activa el plugin. Ahora deberías ver el enlace y el panel de Historias en tu panel de Administrador o Editor.

 

El panel de tipo de correo personalizado de 'Stories' en el tablero de WordPress
El panel de tipo de correo personalizado de ‘Stories’ en el tablero de WordPress

Si compruebas las capacidades disponibles en tu sitio, también verás todas las capacidades relacionadas con las historias que hemos añadido. Aquí, estoy usando el plugin View Admin As para comprobar las capacidades.

Capacidades personalizadas relacionadas con el tipo de puesto personalizado de 'Stories'.
Capacidades personalizadas relacionadas con el tipo de puesto personalizado de ‘Stories’.

Puedes descargar una versión extensa de este plugin a través de este Gist. Registra un tipo de puesto personalizado llamado Proyectos con un conjunto de capacidades personalizadas. Y luego los asigna a dos roles personalizados llamados Estudiantes y Maestros para ayudarte a construir un sitio web educativo.

Hay una forma de definir las capacidades personalizadas que permiten a los usuarios acceder a la configuración de los plugins en función de su función. Discutir cómo hacerlo está fuera del alcance de este artículo, pero puedes referirte a este hilo informativo en StackExchange para más información.

Los mejores plugins de funciones y capacidades de usuario de WordPress

Saber cómo ajustar los roles y capacidades de los usuarios con el código es genial, pero no es para todos. Hay tantas cosas que pueden salir mal si no estás seguro de lo que estás haciendo. Sin embargo, saber cómo funcionan los roles y las capacidades en WordPress ayuda enormemente, incluso si estás usando un plugin.

Veamos algunos de los plugins de WordPress más populares para personalizar fácilmente las funciones y capacidades de los usuarios de WordPress. También enumeraré algunos plugins útiles para probar rápidamente las funciones y capacidades.

User Role Editor (por Vladimir Garagulia)

El plugin de WordPress "User Role Editor"
El plugin de WordPress «User Role Editor»

User Role Editor es el plugin de gestión de funciones y capacidades más popular en el repositorio de WordPress. Viene con una interfaz simple que permite a cualquiera editar los roles de usuario y las capacidades con un solo clic.

Después de instalar y activar el plugin, puedes ir a Usuarios > Editor de Roles de Usuario en tu panel de control para acceder a su interfaz principal.

El panel del Editor de Funciones del Usuario
El panel del Editor de Funciones del Usuario

Aquí hay un resumen detallado de las secciones del tablero marcadas arriba:

  1. Selecciona el rol que deseas personalizar en el menú desplegable. Aparecerán no sólo los roles predeterminados sino también todos los roles presentes en la base de datos. También puedes elegir mostrar las capacidades en forma legible para los humanos en lugar de sus constantes. Otra opción te permite ver las capacidades desaprobadas que ya no están soportadas en la última versión de WordPress.
  2. El Editor de Funciones del Usuario agrupa todas las capacidades en distintas categorías a la izquierda. La categoría de Núcleo incluye todas las capacidades incorporadas. Desde que instalé WooCommerce en este sitio, también puedes encontrar capacidades para sus tipos de postales personalizadas. Incluso el plugin del Editor de Roles de Usuario agrega su propio conjunto de capacidades personalizadas.
  3. A la derecha, encontrará todas las capacidades listadas. Como he seleccionado el grupo «Todo«, puedo ver todas las capacidades. Sin embargo, puede filtrarlas haciendo clic en un grupo de la izquierda. También puedes marcar la opción Sólo concedido en la parte superior para ocultar todas las capacidades que no utiliza ningún rol de usuario.
  4. También puedes añadir un rol, renombrar un rol, añadir una capacidad y eliminar un rol desde aquí. En la parte inferior, encontrarás una opción adicional para ocultar la barra de administración del rol de usuario.
Mostrando las capacidades en forma legible para los humanos
Mostrando las capacidades en forma legible para los humanos

Para personalizar cualquier rol de usuario, simplemente marque o desmarque las capacidades que desee y haga clic en el botón Actualizar para guardar los cambios. Es así de fácil.

Añadiendo un nuevo rol en el Editor de Roles de Usuario
Añadiendo un nuevo rol en el Editor de Roles de Usuario

Haz clic en el botón Agregar función para crear una nueva función. Puedes crear un rol desde cero o duplicar un rol existente usando la opción desplegable Hacer copia de.

Renombrar el "Nombre de la función" fácilmente
Renombrar el «Nombre de la función» fácilmente

También puedes cambiar el nombre de la pantalla de la función haciendo clic en el botón Renombrar la función. Sin embargo, no puedes cambiar el ID de la función (o el nombre de la función). Una solución alternativa es duplicar el rol cuyo ID quieres cambiar y luego borrar el rol original.

Añadiendo una nueva capacidad en el editor de funciones de usuario
Añadiendo una nueva capacidad en el editor de funciones de usuario

Puedes añadir nuevas capacidades haciendo clic en el botón Añadir capacidad.

Eliminar fácilmente los roles de usuario no asignados
Eliminar fácilmente los roles de usuario no asignados

Al hacer clic en el botón Eliminar funciones, podrás eliminar las funciones personalizadas que no hayas asignado a ningún usuario.

Nota: El Editor de Roles de Usuario no permite borrar los roles o capacidades incorporadas de WordPress. Tampoco te permite borrar ningún rol personalizado si está asignado a algún usuario, ni ninguna capacidad personalizada si está asignada a algún rol no administrador.

El botón "Capacidad de eliminación" en el Editor de funciones de usuario
El botón «Capacidad de eliminación» en el Editor de funciones de usuario

Debes tener en cuenta que el botón de capacidad de eliminación aparece sólo si alguna capacidad no está asignada a los no administradores. De lo contrario, se oculta.

También puede asignar múltiples funciones al mismo usuario o no darles ninguna función.

Despojar al usuario de cualquier papel
Despojar al usuario de cualquier papel

Para asignar a un usuario múltiples roles, debes ir al panel de usuarios en tu panel de control y luego hacer clic en el enlace Capacidades que verás a continuación después de pasar el cursor sobre el nombre de usuario.

Asignación de múltiples funciones al mismo usuario
Asignación de múltiples funciones al mismo usuario

Si vas a Settings > User Role Editor en tu panel de administración, también encontrarás opciones adicionales para el plugin User Role Editor.

La pestaña de opciones 'General' para el Editor de Roles de Usuario
La pestaña de opciones ‘General’ para el Editor de Roles de Usuario

Aquí puedes cambiar la configuración por defecto del plugin, instalar módulos adicionales, cambiar el rol por defecto asignado a los nuevos usuarios e incluso restablecer los roles y capacidades de los usuarios a su estado por defecto.

Los módulos adicionales ayudan a ampliar las características del Editor de Funciones del Usuario
Los módulos adicionales ayudan a ampliar las características del Editor de Funciones del Usuario
Establecer el rol predeterminado para los nuevos usuarios
Establecer el rol predeterminado para los nuevos usuarios

 

Restablecer todos los roles y capacidades de los usuarios a su estado predeterminado
Restablecer todos los roles y capacidades de los usuarios a su estado predeterminado

Mientras que la versión gratuita del Editor de Roles de Usuario es más que suficiente para la mayoría de los casos de uso, su versión premium incluye aún más características, incluyendo soporte para la administración de roles y capacidades en las configuraciones de WordPress Multisite.

Members by MemberPress

El plugin The 'Members' de MemberPress
El plugin The ‘Members’ de MemberPress

Members es un plugin funciones y capacidades de usuario para WordPress. Lanzado originalmente como un simple plugin de gestión de funciones y capacidades de usuario, desde entonces ha girado hacia las características de membresía.

El panel de 'Roles' en Members
El panel de ‘Roles’ en Members

Después de instalar y activar el plugin, puedes ver todos los roles disponibles en tu sitio web yendo a Miembros > Roles en tu tablero.

Miembros te permite borrar todos los roles, incluyendo los roles incorporados de WordPress, excepto el rol de administrador y el rol predeterminado. También puedes Editar y Clonar roles, así como listar todos los usuarios asignados a un rol específico.

El panel de "Editar el papel" en los miembros
El panel de «Editar el papel» en los miembros

En el panel Editar función, puede conceder o denegar explícitamente capacidades a una función determinada marcando y desmarcando las casillas correspondientes. También puedes añadir una capacidad personalizada al rol desde aquí.

El panel de 'Agregar un nuevo rol' en Members
El panel de ‘Agregar un nuevo rol’ en Members

Al hacer clic en el enlace Agregar un nuevo rol te llevará a una pantalla similar en la que podrás crear un nuevo rol dándole un nombre de pantalla, un id y su conjunto de capacidades.

 

El panel de "Configuración General" en Members
El panel de «Configuración General» en Members

Al igual que con el Editor de Roles de Usuario, puedes usar Miembros para asignar a los usuarios múltiples roles. También puedes establecer permisos de contenido para restringir el contenido a los usuarios que sólo tienen un determinado rol.

También puedes habilitar el modo 'Sitio Privado' en Members
También puedes habilitar el modo ‘Sitio Privado’ en Members

Puedes configurar tu sitio y su alimentación para que sea privada. Además, puedes restringir el acceso a la API REST de WordPress a personas ajenas a la empresa mediante la aplicación de la autenticación.

Varios complementos para el plugin de Members
Varios complementos para el plugin de Members

Members se distingue de otros plugins de funciones y capacidades por sus increíbles complementos. Le ayudan a añadir toneladas de características adicionales a su sitio, como la privacidad del usuario y la gestión de datos personales (GDPR), añadir capacidades relacionadas con las etiquetas y la categoría, establecer la jerarquía de roles y mucho más.

Los miembros se integran con los populares plugins de WordPress
Los miembros se integran con los populares plugins de WordPress

Puedes integrar perfectamente a los miembros con muchos plugins populares de WordPress. Por ejemplo, puedes usarlo para crear y gestionar capacidades personalizadas para el plugin Advance Custom Fields (ACF). Algunos otros plugins con los que se integra son Easy Digital Downloads, GiveWP, Meta Box y WooCommerce.

Los complementos de los miembros centrados en la membresía (pagos, suscripciones, marketing por correo electrónico y protección de contenido avanzado) sólo están disponibles en su versión premium.

WPFront User Role Editor

El plugin 'WPFront User Role Editor'
El plugin ‘WPFront User Role Editor’

El Editor de Roles de Usuario de WPFront le ayuda a crear, editar o eliminar los roles de usuario y las capacidades en su sitio de WordPress. Su conjunto de características es como los plugins discutidos anteriormente, pero tiene dos características destacadas.

Migrar a todos los usuarios de un rol a otro
Migrar a todos los usuarios de un rol a otro

Después de instalar y activar el Editor de Roles de Usuario de WPFront, puede ir a Usuarios > Asignar / Migrar pantalla en tu panel de administración y migrar todos los usuarios que pertenecen a un rol de usuario particular a otro. Incluso puede asignar roles secundarios a sus usuarios.

Si tienes que migrar muchos usuarios de tu sitio de un rol a otro, esta característica te será muy útil.

La pantalla de configuración de 'Login Redirect' en WPFront User Role Editor
La pantalla de configuración de ‘Login Redirect’ en WPFront User Role Editor

Otra de las características útiles del Editor de Roles de Usuario de WPFront es el Redireccionamiento de Login basado en roles. Por ejemplo, puedes redirigir a los usuarios con el rol de Editor a la página de Mensajes después de que inicien sesión. También tienes la opción de bloquearles el acceso a la página de /wp-admin y ver la barra de herramientas en el frontend.

Advanced Access Manager

El plugin 'Advanced Access Manager'
El plugin ‘Advanced Access Manager’

Advanced Access Manager (AAM) es un poderoso plugin de WordPress que te permite controlar casi todos los aspectos de tu sitio web. Incluye más de 200 características distintas y está diseñado para usuarios avanzados de WordPress que saben cómo funcionan los roles y las capacidades.

En comparación con los plugins mencionados anteriormente, la AAM tiene muchas más características. Pero como se trata de un plugin enfocado al desarrollo, no es tan fácil de usar para principiantes o usuarios intermedios.

El tablero principal en Advanced Access Manager
El panel principal en Advanced Access Manager

Puedes dividir el panel principal de la AAM en cuatro regiones distintas. Las he numerado en la imagen de arriba con un resumen abajo.

  1. El área superior menciona el «tema» actual que se está considerando. Aquí, es el papel: Administrador, pero puede ser un usuario específico, un visitante anónimo, o una configuración por defecto para todos.
  2. El área debajo del sujeto es el panel principal donde tienes todos los ajustes para administrar el acceso a varias cosas en tu sitio para el sujeto.
  3. El tercer área es el Administrador de Usuarios/Roles. Mediante sus iconos con pestañas, puede seleccionar lo que desea administrar. ¿Se trata de un rol de usuario, un usuario específico, un visitante anónimo o un comportamiento de acceso predeterminado para todos?
  4. El cuarto área te permite administrar la configuración de AAM, instalar los complementos premium y contactar con el soporte.
El panel de "Configuración" en el Advanced Access Manager
El panel de «Configuración» en el Advanced Access Manager

La AAM organiza sus ajustes en 5 grupos basados en su comportamiento y uso.

  • En la configuración de servicios se enumeran todos los módulos de la AAM que puedes activar o desactivar. Al cargar los módulos de forma selectiva, puede mantener tu sitio optimizado.
  • El área de Configuración del núcleo te permite habilitar o deshabilitar algunas de las características principales de la AAM y de WordPress.
  • Los Ajustes de contenido se relacionan con el contenido del sitio (por ejemplo, publicaciones, páginas, tipos de publicaciones personalizadas).
  • La sección de Configuración de seguridad incluye la configuración de la función de inicio de sesión seguro de AAM. A partir de ahora, sólo hay dos configuraciones disponibles: Bloqueo por fuerza bruta y una sesión por usuario.
  • ConfigPress es una interesante característica que permite alterar la configuración del plugin AAM con código basado en INI.
El panel de 'Complementos' en el Advanced Access Manager
El panel de ‘Complementos’ en el Advanced Access Manager

AAM es un plugin orientado a los desarrolladores que va más allá de los roles y capacidades de los usuarios. Te da un control granular sobre lo que cada rol puede o no puede hacer en tu sitio web.

Instale una "Política de Acceso" para su sitio web para mantenerlo seguro
Instala una «Política de Acceso» para tu sitio web para mantenerlo seguro

Puedes usar la AAM para establecer una política de acceso y seguridad para tu sitio web. Define qué papel, y bajo qué condiciones, puede acceder a varios recursos de su sitio web. Si quieres empezar inmediatamente, puedes instalar una política de acceso lista para instalar desde el Hub de Políticas de Acceso de la AAM.

El widget 'AAM Secure Login' para añadir un formulario de acceso frontal
El widget ‘AAM Secure Login’ para añadir un formulario de acceso frontal

La AAM le permite crear cuentas y roles de usuario temporales. Es una forma segura de compartir una cuenta con recursos externos. Las cuentas de usuario temporales caducarán después de la fecha y la hora que hayas establecido. Con los roles temporales, el usuario será despojado de ese rol después del período especificado.

Cubrir todas las características de la AAM está fuera del alcance de este artículo. Puedes consultar la documentación de Advanced Access Manager para saber más sobre todas sus extensas características.

Consejo: User Access Manager   es una alternativa decente al Administrador de Acceso Avanzado, aunque tiene menos características y no se actualiza con frecuencia.

User Switching

El plugin 'User Switching' WordPress
El plugin ‘User Switching’ WordPress

El cambio de usuario te permite cambiar entre diferentes cuentas de usuario de WordPress con un solo clic. Si estás probando muchos roles y capacidades de usuario, el uso de este plugin te ayudará a ahorrar mucho tiempo. El cambio de usuario utiliza el sistema de autenticación de cookies incorporado en WordPress para recordar la(s) cuenta(s) a la(s) que has cambiado, de modo que puedas volver a cambiarte a ellas inmediatamente.

Después de instalar y activar el plugin, visita el menú de Usuarios en tu tablero. Verás un enlace «Cambiar a» para cada usuario. Si haces clic en él, cambiarás al usuario que desees.

Haz clic en el enlace "Cambiar a" para cambiar al usuario que quieras
Haz clic en el enlace «Cambiar a» para cambiar al usuario que quieras

Puedes volver a tu cuenta original haciendo clic en el enlace Volver a cambiar en el tablero o en la pantalla de tu perfil de usuario.

Puedes volver a tu cuenta de origen fácilmente
Puedes volver a tu cuenta de origen fácilmente

También puedes desactivar temporalmente tu cuenta de administrador para ver cómo aparece el frontend a los visitantes.

Enciende y apaga tu cuenta con un solo clic
Enciende y apaga tu cuenta con un solo clic

Como medida de seguridad, sólo los usuarios con capacidad para editar usuarios pueden cambiar de cuenta. De manera predeterminada, en una instalación de WordPress de un solo sitio sólo los administradores tienen esta capacidad, mientras que en una red de varios sitios sólo los superadministradores tienen esta capacidad.

Para simplificar aún más el cambio de usuario, puede instalar la extensión de cambio de usuario de la barra de administración para que aparezca el enlace Cambiar a usuario en la barra de administración.

Añadiendo el enlace "Cambiar a usuario" a tu barra de administración
Añadiendo el enlace «Cambiar a usuario» a tu barra de administración

View Admin As

El plugin ‘View Admin As’ WordPress plugin
El plugin ‘View Admin As’ WordPress plugin

View Admin As es un plugin de cambio de usuario avanzado que también incluye un administrador de funciones y capacidades. A diferencia del plugin de cambio de usuario, no es necesario instalar una extensión para añadir el menú de cambio de usuario a la barra de administración. Ver Admin As añade todos los elementos del menú principal a la barra de administración de forma predeterminada.

El menú "Ver como" en la barra de administración
El menú «Ver como» en la barra de administración

Se puede cambiar entre los usuarios o roles existentes (asumiendo sus capacidades), incluso si no existe ningún usuario con esos roles. Al hacer clic en el enlace de visitante del sitio, se le llevará al frontend del sitio, donde podrá probar la funcionalidad del sitio como un usuario normal sin salir de la pestaña de su navegador.

Ver Admin As te permite cambiar temporalmente tus propias capacidades. Como se hace de forma no destructiva, no pierdes el acceso a tus principales capacidades.

Personalizar las capacidades temporalmente para su usuario actual
Personalizar las capacidades temporalmente para su usuario actual

Después de cambiar a una cuenta de usuario, puedes editar tus preferencias y ajustes de pantalla directamente desde el menú. También puedes cambiar de idioma/localización en el frontend y en el backend por separado.

No está limitado a un tipo de vista, ya que puedes combinar las diversas opciones y aplicarlas todas al mismo tiempo.

Ver Admin As viene con dos módulos opcionales que puede habilitar si es necesario.

View Admin As ajustes y módulos opcionales
View Admin As ajustes y módulos opcionales

El primer módulo añade la función Role Defaults que permite establecer la configuración de pantalla por defecto para todos los roles. Puede aplicar estos valores predeterminados a un rol, a un solo usuario o a futuros usuarios nuevos.

El segundo módulo permite la funcionalidad de Role Manager. Cualquier cambio que hagas con este módulo en los roles y capacidades es permanente. A diferencia de otros plugins de edición de roles, este módulo te permitirá eliminar el rol asignado a un usuario migrando automáticamente a otro rol.

Puedes consultar la documentación de View Admin As para saber más sobre sus amplias características.

Funciones de usuario de MyKinsta

La función multiusuario de MyKinsta le permite crear y gestionar varios usuarios bajo la misma cuenta, dándo acceso a aspectos únicos de tu cuenta Kinsta o a sitios web específicos alojados en Kinsta.

Hay varios roles para elegir para personalizar el acceso de los usuarios según sus necesidades.

La pantalla de "Gestión de Usuarios" en el tablero de MyKinsta
La pantalla de «Gestión de Usuarios» en el tablero de MyKinsta

El primer usuario obtiene el rol de Dueño de la Compañía por defecto. Es el rol más poderoso e incluye todas las capacidades de un Administrador de la Compañía también.

Sólo puede haber un Propietario de la Compañía a la vez, pero puede transferir el rol si es necesario a otro Administrador de la Compañía. Haciendo esto también transferirás la propiedad de tu cuenta Kinsta al nuevo Propietario de la Compañía.

Sólo el dueño de la compañía puede solicitar a Kinsta que elimine la cuenta.

Puedes dividir los otros roles de usuario en 2 categorías de roles principales:

  • Nivel de la compañía
  • Nivel del sitio

Los roles de nivel de empresa dan a los usuarios acceso a los detalles de la cuenta Kinsta a nivel de empresa, mientras que los roles de nivel de sitio dan a los usuarios acceso sólo a los sitios específicos asignados a ellos. Cuando invites a un nuevo usuario o modifiques uno ya existente, la primera elección que debes hacer es si les das acceso a la empresa o al sitio.

Elegir el tipo de rol cuando se invita a un usuario a MyKinsta
Elegir el tipo de rol cuando se invita a un usuario a MyKinsta

Roles a nivel de compañía

El administrador de la compañía

El panel del 'Administrador de la Compañía' en MyKinsta
El panel del ‘Administrador de la Compañía’ en MyKinsta

El papel de Administrador de la Compañía otorga el más alto nivel de acceso en MyKinsta. Le da al usuario un control completo sobre la cuenta de Kinsta y todos sus sitios. Debes dar este rol sólo a los usuarios en los que confíes.

Desarrollador de la compañía

tablero-mandos-compania-desarrollo-mykinsta-esp
tablero-mandos-compania-desarrollo-mykinsta-esp

La función de desarrollador de la empresa otorga acceso para administrar todos los sitios, incluso para eliminarlos. Dado que los roles de usuario de MyKinsta se basan en una jerarquía, el Desarrollador de la empresa también puedes administrar los usuarios del sitio. Sin embargo, un Desarrollador de empresa no puede acceder a la configuración de la empresa ni a los detalles de facturación.

Facturación de la empresa

El panel de "Facturación de la Compañía" en MyKinsta
El panel de «Facturación de la Compañía» en MyKinsta

La función de facturación de la empresa sólo permite ver los detalles de la facturación y la configuración de la empresa. No tienen acceso a ningún sitio. Los usuarios con el rol Facturación de la empresa pueden comprobar las facturas, habilitar los correos electrónicos de facturación automática y cambiar los datos de la empresa, como la dirección y la información de contacto.

Roles a nivel de sitio

Administrador del sitio

El panel del 'Administrador del Sitio' en MyKinsta
El panel del ‘Administrador del Sitio’ en MyKinsta

El papel de Administrador del Sitio tiene acceso completo a un sitio específico, incluyendo el control de todos los ambientes adjuntos a ese sitio. Sin embargo, no pueden eliminar un sitio de la cuenta de la empresa. Puedse asignar el mismo usuario como Administrador del Sitio para varios sitios.

Desarrollador del sitio

El panel de control del "Desarrollador de Sitios" en MyKinsta
El panel de control del «Desarrollador de Sitios» en MyKinsta

El rol de Desarrollador de Sitios tiene acceso sólo al entorno de staging de tu sitio asignado. Pueden hacer cualquier cosa en el entorno de la puesta en escena, pero no pueden eliminar el entorno de la puesta en escena o impulsar sus cambios en vivo. Al igual que con los Administradores de sitios, puede asignar el mismo usuario como Desarrollador de sitios para varios sitios.

Los desarrolladores de sitios pueden acceder al entorno de puesta en escena del sitio asignado
Los desarrolladores de sitios pueden acceder al entorno de puesta en escena del sitio asignado

También puede ver que los desarrolladores de sitios no tienen acceso a las funciones de análisis, administración de usuarios y registro de actividades en el tablero de MyKinsta.

Los roles de usuario de MyKinsta vs. los roles de usuario de WordPress

No hay superposición entre los roles de usuario de MyKinsta y WordPress. Puedes usar ambos independientemente el uno del otro.

Como propietario de una cuenta Kinsta, la función de roles multiusuario de MyKinsta te ayuda a gestionar con facilidad un equipo de gerentes, desarrolladores y contables. Facilita enormemente a las agencias de desarrollo web la gestión de todos los sitios de tus clientes desde un único y potente panel de control.

Resumen

Las funciones y capacidades de WordPress son los conceptos fundamentales de la gestión del acceso de los usuarios. Te ayudan a controlar las acciones que todos los usuarios de tu sitio pueden realizar. También son utilizados por muchos plugins y temas para añadir características muy útiles al núcleo de WordPress.

WordPress viene con su propio conjunto de funciones y capacidades, pero si necesitas más flexibilidad, puedes personalizarlas o crear tus propias funciones y capacidades. Puedes hacerlo con tu propio código o usando un plugin de terceros.

Comprender cuáles son los roles y las capacidades, y aprender a manejarlos, es un paso crucial para dominar WordPress. ¡Empieza con ellos hoy!

Carlo Daniele Kinsta

Carlo es un diseñador y desarrollador de front-end freelance. Cuando escribe artículos y tutoriales, Carlo se ocupa principalmente de los estándares web, pero cuando juega con sitios web, su mejor compañero de trabajo es WordPress.