Los roles de WordPress y capacidades de un usuario WordPress son los accesos y permisos que otorgamos a los usuarios de nuestro sitio web para que tengan mayor o menor capacidad de acción dentro de nuestra web.
Si tenemos varios usuarios en nuestra web sería importante conocer cómo funcionan los roles en WordPress y qué capacidades otorga cada uno para saber realmente qué puede hacer un usuario y que no en un momento dado.
Ante todo, tenemos que velar por la seguridad de nuestro WordPress y si a nuestra web acceden varios usuarios, debemos tener controlado qué accesos tienen.
También te puede interesar:
¿Qué es Elementor? Todo sobre Elementor Page Builder
¿Qué es Divi? Guía de Divi Theme para WordPress
Cómo eliminar un rol de WordPress
Cómo configurar Yoast SEO en WordPress
Ventajas de los Page Builder en WordPress
Qué plugins y themes usa una web echa con WordPress
Reparar un SAI Cyber Power Value 800ELCD
Tabla de contenidos
Definición de WordPress roles and capabilities
Tenemos 5 Roles WordPress definidos por defecto y que podemos utilizar para plantear nuestra agencia de redacción de artículos de nuestro blog.

- Super Admin: Si tenemos un red de blogs (wordpress multisite), sería el administrador de la red.
- Administrador: Tiene acceso a todo. Puede desde publicar entradas, hasta gestionar los plugins, themes, la configuración de los menús y sidebar, etc. Puede hacer cualquier cosa.
- Editor: Con el editor rol wordpress podemos publicar y editar entradas propias y de otros usuarios.
- Autor: Sólo puede publicar y editar sus propias entradas.
- Colaborador: Solo puede editar entradas pero no puede publicar.
- Suscriptor: Solo puede entrar en su página de perfil.
Dentro de cada rol se especifican las capacidades que tiene cada uno y que puede ejercer dentro de nuestro sitio wordpress. Ejemplos de capacidades de un rol WordPress:
→ Publicar: publish_post
→ Moderar comentarios: moderate_comments
→ Editar usuarios: edit_users
Estos roles, con estas capacidades, se asignan en la creación del usuario.

Por defecto se asigna el rol suscriptor, ya que es el que menos permisos tiene. Pero eso lo podemos cambiar en las preferencias de nuestro sitio y que sea otro el que se asigne por defecto en la creación de nuestros usuarios.
En esta captura veis dos que seguramente no tendréis, que son el SEO Editor y el SEO Manager. Eso es porque tengo instalada la plantilla Divi y me permite gestionar esos dos roles para controlar el acceso a ciertas partes de Divi.
Si queréis saber cómo crear un nuevo rol en wordpress mediante código os explico más adelante.
10 Plugins para gestionar los roles y capacidades de WordPress
Estos son algunos plugins que podéis encontrar en el repositorio de WordPress para poder gestionar y sacarle mayor partido a los accesos y capacidades de un usuario WordPress.
Con estos roles wordpress plugins lo que conseguireis es crear roles wordpress, editar roles wordpress, y modificar las capacidades asignadas a un rol de WordPress entre otras muchas funcionalidades adicionales que incorporan algunos de ellos.
WPFront User Role Editor
Permite gestionar roles personalizados a nuestras necesidades y permite asignar capacidades a nuestro antojo para que podamos adaptarnos a cualquier modelo de negocio. Es la manera más sencilla para crear roles nuevos, editar roles wordpress, o eliminar roles.
Descarga Gratis: https://es.wordpress.org/plugins/wpfront-user-role-editor/
Descarga PRO: https://wpfront.com/user-role-editor-pro/

Multiple Roles
Con este plugin podemos asignar varios roles a un mismo usuario.
Descarga Gratis: https://es.wordpress.org/plugins/multiple-roles/

User Roles and Capabilities
Con este plugin lo que me gusta es que además de poder gestionar las capacidades de cada rol, es que podemos asignar permisos para la gestión y administración de los plugins. De esta manera podemos controlar el acceso a cada uno de los plugins y evitar que nuestros clientes toquen más de la cuenta.
Descarga: https://es.wordpress.org/plugins/user-roles-and-capabilities/

User Role Editor
Permite gestionar las capacidades de cada rol excepto del perfil administrador. Este plugin intenta facilitar la gestión permitiendo hacer asignaciones simultáneas y en su versión de pago incluye muchas funcionalidades extra como restringir acceso a la administración de widgets, menús, exportar configuración, permisos de lectura a ciertas páginas del backend, etc.
Descarga Gratis: https://es.wordpress.org/plugins/user-role-editor/
Descarga PRO: https://www.role-editor.com/

Members
El plugin de WordPress Members permite editar los roles, asignar múltiples roles a un usuario, denegar capacidades a usuarios concretos, clonar roles, gestionar permisos de contenido, crear shortcodes para controlar el acceso a los contenidos, mostrar un formlario de login como un widget y convertir tu sitio wordpress en privado.
Descarga Gratis: https://wordpress.org/plugins/members/

New User Approve
Lo bueno del plugin WordPress New User Approve es que permite gestionar el registro de usuarios de WordPress. Este plugin modifica el proceso de registro, de manera que el administrador recibirá un email cuando se produzca un registro y deberá aceptarlo o rechazarlo. Solo los usuarios que tengan aprobado su registro podrán logarse en el sitio.
Descarga Gratis: https://wordpress.org/plugins/new-user-approve/

Advanced Access Manager
Con este plugin, podrás según el autor, en administrar el acceso al contenido de tu sitio wordpress para cualquier rol, usuario individual y visitantes o, incluso, definir un acceso predeterminado para todas las publicaciones, páginas, tipos de publicaciones personalizadas, categorías y taxonomías personalizadas.
Descarga Gratis: https://wordpress.org/plugins/advanced-access-manager/
Extensiones de pago: https://aamplugin.com/

User Access Manager
De todos los plugins que os he citado os puedo hablar por experiencia del plugin UAM. Con este plugin lo que controlamos es el acceso a las páginas de nuestro sitio desde el front-end.

Página de configuración de UAM para crear grupos de usuarios.
Listado de páginas y los permisos que hemos otorgado:

Dar permisos desde una página:

Descarga Gratis: https://es.wordpress.org/plugins/user-access-manager/
Editor Menu and Widget Access
Este es un plugin que he utilizado recientemente y que es muy sencillo y útil para cuando solo quieres otorgar acceso a los widgets y menús para el rol Editor. Aunque permite gestionar algunos permisos más, su principal uso es este. Es muy sencillo de usar y con activar el plugin ya le concede permiso a los editores para editar los widgets y los menús. Todo lo que actives en la configuración, se ocultará a estos usuarios.

Descarga Gratis: https://es.wordpress.org/plugins/editor-menu-and-widget-access/
Divi Roles
Elegant Themes no tiene como tal un plugin de gestión de roles, pero sí tiene una ventana de configuración donde podemos gestionar las capacidades de nuestros usuarios para limitar el acceso a las opciones de configuración de Divi, de ahí que lo comente.

Desde el panel de opciones de Divi podemos definir las capacidades a los roles: administrador, editor, autor, colaborador, SEO Manager y SEO Editor. Estos últimos, son roles específicos de divi que nos permiten diferenciar entre dos roles para usuarios que nos vayan a gestionar el SEO de nuestro WordPress.
Descargar: https://www.javierrguez.com/recomienda/divi/
Códigos de ejemplo para trabajar con Roles WordPress
Ahora os daré algunas indicaciones básicas sobre cómo podemos trabajar con los roles wordpress haciendo uso de la API de WordPress.
Son trozos de código pequeños que podemos aplicar en nuestro plugin de funciones para dotar a nuestro WordPress de mayor funcionalidad.
Veréis que con pequeños trozos de código podemos hacer grandes cosas y os servirá de inspiración para que inventéis vosotros mismos nuevas funcionalidades.
Asignar capacidades a un usuario mediante la API de WordPress
Mediante código podemos asignar capacidades a un usuario wordpress mediante la API de WordPress. Esto es útil para realizar tus plugins personalizados y asignar roles a un usuario WordPress.
Lo que os muestro a continuación es un ejemplo de una función para asignar capacidades a un usuario concreto. Supongamos que tenemos un usuario con perfil Suscriptor, que es el rol más restrictivo que tiene WordPress. Y ahora queremos que este usuario tenga permisos especiales para poder dar de alta usuarios y poder gestionarlos. Para hacer eso, podemos usar la siguiente función que funciona de la siguiente manera.
Si un usuario se loga en nuestro sistema, la función se ejecutará automáticamente y le otorgará permisos especiales para poder gestionar usuarios.
// Función para añadir capacidades al usuario conectado que no corresponden a su rol por defecto.
function add_caps_user() {
$user = new WP_User( get_current_user_id() );
$user->add_cap( 'edit_users' );
$user->add_cap( 'delete_users' );
$user->add_cap( 'list_users' );
$user->add_cap( 'create_users' );
}
add_action( 'admin_init', 'add_caps_user');
Cómo saber el rol de un usuario WordPress
También podemos crear funciones personalizadas en función del rol de un usuario wordpress. Para obtener el rol de un usuario conectado tenemos que hacer lo siguiente. Lo ideal es que existiera una función que fuera get user role name que nos diera el nombre de los roles, pero no es así. Para saber los roles debemos obtener primero la información del usuario wordpress y después leer la propiedad roles como podemos ver en el siguiente ejemplo obtenido del Codex WordPress:
<?php $user_info = get_userdata(1); echo 'Username: ' . $user_info->user_login . "\n";
echo 'User roles: ' . implode(', ', $user_info->roles) . "\n";
echo 'User ID: ' . $user_info->ID . "\n";
?>
Esto nos dará como resultado:
Username: admin
User roles: administrator
User ID: 1
Y nos podrá servir como base para hacer cualquier tratamiento que necesitemos.
¿Cómo crear un rol de WordPress mediante la API?
Ahora os voy a dejar un ejemplo de cómo podemos crear un role en WordPress. Esto es aplicable si tenemos WooCommerce instalado, ya que el customer role es un rol de WooCommerce.
El siguiente código se ejecuta cuando entramos en WordPress y crea directamente el un rol nuevo que en mi caso lo llamé Distribuidor.
// Crea el rol de usuario "Cliente Distribuidor": add_role wordpress
add_action( 'init', 'crea_rol_distribuidor' );
function crea_rol_distribuidor(){
$customer_role = get_role( 'customer' );
add_role( 'cliente_distribuidor', __( 'Cliente Distribuidor' ), $customer_role->capabilities );
}
La idea de crear este rol era para poder asignarlo manualmente a los clientes que se hicieran hacer distribuidores de mis productos previa entrega de la documentación necesaria. En cuanto cumplieran todos los requisitos, le asignaría manualmente este rol nuevo, y en al zona de la tienda le mostraría los productos con un descuento por ser distribuidor.
Más información en el Codex de WordPress
En la documentación de la API de WordPress podéis encontrar más información y ejemplos:
https://codex.wordpress.org/Plugin_API
Os recomiendo la lectura de los actions y filters. Son muy útiles para personalizar nuestros plugins y personalizar nuestra web.
Así, resumidamente, os explico para qué es cada uno:
Acciones / actions: son para añadir funcionalidades nuevas, como la que os he puesto de ejemplo antes.
Filtros / filters: un filtro lo que hace es filtrar. Es hacer pasar pasar algo por un filtro y modificarlo para que podáis entenderlo. Por ejemplo, podemos pasar por el filtro el texto de un artículo de WordPress y añadirle un prefijo o un sufijo, poner todo el texto en negrita, o todo en mayúsculas, etc. Es un ejemplo. Pero puedes cambiar lo que desees.
Se pueden hacer cosas muy curiosas como la que explico en este artículo: Modificar las banderas de Polylang
https://www.javierrguez.com/cambiar-las-banderas-polylang/
Conclusiones
Como habéis podido ver, os he hecho un repaso de los principales plugins que permiten la gestión de roles wordpress y sus capacidades así como herramientas y mecanismos para crear nuestros propios plugins para hacer lo que necesitemos a nuestro gusto sin necesidad de tener que recurrir a plugins de terceros.
Espero que os sean de utilidad y podáis comenzar con el desarrollo de vuestros plugins y crear vuestras propias funciones.



¡Hola! Soy Javier. Soy informático y me gusta documentar todo lo que aprendo. En mi blog te enseño todo lo que sé y cómo puedes aprender a crear tu propia web, mejorar el SEO y aplicar técnicas de Marketing Digital para conseguir mayor visibilidad. Suscríbete para no perderte ninguna de mis guías sobre WordPress, posicionamiento SEO o Marketing Digital.

Hola que tal,
Gracias por los datos.
Mira lo que yo busco es algún plugin o solucion alterna, que me permita diferenciar la ruta de acceso del Admin y el resto de los roles.
Ejemplo:
Entrada del administrador: /wp-admin
Entrada resto de los roles: /autores
Con esto evito tener que andar ventilando la ruta de acceso del administrador.
Quedo atento y muchas de antemano muchas gracias.
Hola Cristian. Pues estaría interesante la verdad, pero no sé de ningún Plugin que lo haga. Yo lo resuelvo con Divi, usando el módulo de login. Así los usuarios se Logan desde el frontend y no tienen porqué usar la URL de admin. Si usas Divi, esta idea te sirve ;). Un saludo, Javier.
Hola, alguno que funcione con woocommerce? necesito aprobar a los usuarios manualmente, antes de realizar una compra, ya probe todos y no funciona ninguno 🙁
Ahora mismo no tengo ningún WooCommerce donde probar. No viene ningún ajuste en WooCommerce, igual que lo hay en WordPress para autorizar o no la creación de cuentas? Un saludo.
Sabes si habría alguna opción para cambiar autmáticamente el rol del usuario cuando este realiza una acción determinada (cargar un archivo a la página) o, al menos, controlar cuando un usuario ha subido un archivo a la web? (uso wp-file-download, pero esto último tampoco hace falta que lo respondas si no sabes la respuesta inmediata). Un saludo y gracias de antemano!
La verdad es que se me escapa. Pero he encontrado esto creo que a lo mejor te puede valer: https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_handle_upload_prefilter Un saludo.
Muchísimas gracias! Un saludo
Hola Javier,
Estoy montando un marketplace con el plugin WC Vendors y el problema que me encuentro, es que he instalado el plugin Perfect WooCommerce Brands para que los clientes puedan filtrar por marcas, pero solo a mi como administrador me deja seleccionar la marca cuando edito un producto, a los vendedores, no le sale la meta box de las marcas cuando editan sus productos.
Hable con el desarrollador del plugin Perfect WooCommerce Brands, y me comento que era un problema de roles.
También hable con el desarrollador del plugin WC Vendors, y me comento:
"Por lo general, con cualquier extensión de terceros, deberá integrarlo en nuestros formularios front-end. Por su aspecto, solo crea una taxonomía, lo que significa que tendrá que crear un campo select2 personalizado que use esa taxonomía y luego se enganche en la acción de guardar producto para guardar la taxonomía "
Se te ocurre algún plugin que le permita seleccionar las marcas a los vendedores cuando editan sus productos.
Muchísimas gracias
Ricardo
Hola Ricardo. No conozco el plugin que me comentas. Mejor que sea el propio soporte del plugin los que te puedan dar una solución. Un saludo, Javier.
Hola, he leído todo, interesante artículo. Pero igual se me ha escapado uno que haga lo que necesito. Para una empresa existirán diferentes páginas dentro de una misma web. Cada una para un departamento distinto, en el que deben poder editar cada jefe de departamento su contenido y sólo el suyo, textos, imágenes, enlaces, pdf, etc.
Existe un administrador que es el que crea esos roles y las páginas de cada departamento, pero cada jefe de cada uno editará sus propios contenidos.
Gracias.
Hola David. Con los roles por defecto de wordpress puede que te sirva, aunque no existe un rol de "departamento". Tienes el rol "autor" que solo él puede editar sus páginas. Combinando esto con alguno de los plugins puede que consigas lo que necesitas. Un saludo.
Hola, ¿Podríais señalarme algún plugin que me permita asignar a determinados usuarios el permiso de editar solo en una sección de mi blog?
Pues no te sabría decir, por el permiso de editar se refiere a editar las entradas. La gestión de roles de Divi si es más avanzada, pero enfocado al diseño con Divi. No sé si es lo que buscas. Un saludo.
Hola Javier,
quiero dar a un desarrollador el ingreso a todo un sitio con WordPress virgen instalado para que lo diseñe desde cero y tenga posibilidad de ingreso a las funciones que necesita para programar todo el sitio, pero que no pueda cambiar su usuario y contraseña de ese rol (para reservarme yo ese rol). Existe alguna posibilidad de eso en WordPress o conoces algún plugin que me lo permita? Mil gracias!
Buenas Daniel. El que yo he usado en alguna ocasión es el "Editor Menu and Widget Access". Le das permiso de Editor, y después le habilitas los menús que quieras. O sino, le das permiso de administrador, y si te quisiera fastidiar, tu siempre tienes acceso al hosting para restaurar o recuperar las contraseñas de tu usuario, etc. Para recuperar el acceso a un WordPress yo lo hago así, accedes a la tabla de usuarios desde phpMyAdmin, le modificas el correo al usuario que quieres recuperar, y después le das a recuperar contraseña desde wp-admin. Así ya recibirás en tu correo el enlace para poder entrar. Espero que te sirva. Un saludo
Hola Javier,
Primero que nada quisiera agradecer por toda la información que has compartido, está excelente. Por otro lado, quisiera solicitar tu ayuda, ya que quisiera asignar el rol de usuario con base en la página donde se están registrando. Es decir, si se registran en la página original de woocommerce dar «x» rol y si se registran en la página secundaria creada con un shortcode, asignar «y» rol. El código que estoy usando es este, sin embargo no tengo buenos resultados:
function wc_assign_custom_role($args) {
if ( is_page(‘mi-cuenta’) )
{$args[‘role’] = ‘y’;return $args;}
else
{ $args[‘role’] = ‘x’;return $args;}
}
Nota: Si le quitas la condicional funciona bien, pero solo te deja manejar un rol al momento de registrar.
Gracias anticipadas.
¡Saludos!
Prueba a activar el modo debug e imprime por pantalla las variables para ver cómo se comportan. A lo mejor así descubres qué ocurre. Un saludo.
Buen día, me interesa hacer ciertos usuarios con contraseña pero que solo entren a una página que yo como admin les creo con ciertos documentos que puedan descargar pero a su vez puedan subir archivos. Pero que no esté visible públicamente, que solo esté visible para cada usuario y que solo tengan esos roles descargar solo los archivos que están en su sección o página.
Muy buen aporte, gracias
Gracias 😉
Hola Javier!! Enhorabuena por el post, está genial!! Quería saber si tu conoces algún plugin o si se puede hacer algo mediante códigos pequeños haciendo uso de la API de WordPress para el siguiente caso:
Estoy construyendo una web de hoteles y mi intención es que cada hotel tenga una pequeña ficha o sección con algunas fotos, algo de información sobre ellos y el lugar donde están situados (como booking o edreams pero sin todo el royo de las reservas). Me gustaría que cada dueño de cada hotel pudiera gestionar su ficha/sección sin tener que estar yo modificando cada dos por tres sus informaciones o fotos. Entonces había pensado convertir a cada dueño de cada hotel en "colaborador" mediante la asignación de roles de wordpress para que ellos pudieran toquetear la información de su ficha/sección cuando ellos quisieran. Y yo solo tendría que vigilar y publicar las modificaciones que cada uno fuera haciendo de su hotel. ¿Hay algún plugin o algo que pueda hacer para que cada dueño de cada hotel (con el rol de colaborador) solo pudiera tener acceso a la ficha/sección de su hotel sin la posibilidad de modificar/editar las fichas de los otros hoteles de la competencia? Algo que me permitiera darles una contraseña para que solo tuvieran acceso a su ficha. A ver si tú me puedes ayudar. Muchas gracias de antemano y un saludo!!
Hola Fernando. ¿No te sirve el rol de Autor que solo le permite modificar sus propias páginas? Un saludo, Javier.
Lo primero, muchas gracias por contestarme!!! Mi problema es que voy a tener muchas pequeñas fichas/secciones de cada hotel en cada página de mi web... Por ejemplo, en la página 1 habrá 20 fichas/secciones, en la página 2 otras 20 fichas/secciones, en la página 3 lo mismo... entonces lo que yo busco es que cada dueño pueda solo tener acceso a la pequeña sección de su hotel para que modifiquen toda esa sección a su antojo pero sin la posibilidad de que puedan "toquetear" las secciones del resto de los hoteles aunque estén en esa misma pagina. Mi temor es que si les doy acceso a la pagina 1 de mi web, puedan toquetear todos los hoteles que están en esa pagina 1... no se si me explico. Con lo que tu me has dicho, ¿podría restringir el acceso a cada dueño para que solo tengan acceso a la pequeña sección de su hotel o si le doy acceso implica que lo van a tener para toquetear todos los hoteles que están en esa pagina 1 de mi web? Perdona porque estoy un poco perdido en estos temas. Un saludo Javier
"Con este plugin lo que me gusta es que además de poder gestionar las capacidades de cada rol, es que podemos asignar permisos para la gestión y administración de los plugins. De esta manera podemos controlar el acceso a cada uno de los plugins y evitar que nuestros clientes toquen más de la cuenta."
Pues ya nos contaras como... No lo he encontrado 🙁
Hola Richard. Mira la tercera captura de pantalla que hay la página del plugin. Me refiero a eso, que puedes darle diferentes permisos de administración de los plugins. Un saludo.
Gracias Javier..yo me decidí por User Roles and Capabilities y me soluciono el de dar permisos al rol Colaborador...permitiendo accede a la Biblioteca de medios..genial justo lo que buscada.
Lo que no veo es la gestión de los Proyectos ..para quitar el acceso .
¿sabes si es posible con este plugin?
Gracias
Hola Ernes. Con el plugin Editor Menu and Widget Access sí puedes gestionar el permiso de gestión de proyectos. Un saludo, Javier.
Hola! excelente Nota! Mi pregunta es: cuál pluggin podría servir para que el usuario Editor visualice únicamente sus publicaciones de Post y Páginas, ó aquellas publicaciones(post+pages) que yo como Administrador le asigne como para que las autoadministre el usuario.
Saludos y agradeceré mucho si tiene alguna referencia de pluggin.
Hola. Por defecto, todas las páginas publicadas son visibles por cualquier visitante de la web. Eso no se puede restringir. A no ser que te refieras a darle el rol de Autor, que así solo él puede gestionar las entradas que él vaya creando. A lo mejor te refieres a esto último. Un saludo.