Skip to content

Guía definitiva sobre roles y capacidades en WordPress

Alejandro Frades | Actualizado en:
Guía definitiva sobre roles y capacidades en WordPress Modular

Cada sitio WordPress es un ecosistema que depende en gran medida de sus usuarios y su interacción. La importancia de conocer y gestionar los roles de WordPress va más allá de una simple administración. Es un elemento esencial para garantizar la seguridad y mejorar la eficiencia de cualquier sitio en WordPress.

¿Qué son los roles de WordPress?

Los roles de WordPress definen el conjunto de tareas y permisos que un usuario en WordPress puede realizar. Estos roles proporcionan una estructura que permite a los administradores asignar responsabilidades y limitar el acceso según sea necesario.

 Descripción detallada de los roles predeterminados de WordPress

  • Super Admin: Exclusivo de WordPress Multisite, tiene acceso a toda la red de sitios.
  • Administrador: Control total sobre el sitio, desde plugins hasta la modificación de temas.
  • Editor: Puede publicar, editar y eliminar cualquier contenido, incluidos los de otros usuarios de WordPress.
  • Autor: Tiene la capacidad de publicar y editar sus propias entradas.
  • Colaborador: Puede redactar entradas pero no publicarlas. Requiere aprobación del Editor o Administrador.
  • Suscriptor: Solo puede gestionar su perfil.

Importancia de los roles y permisos en WordPress

Los roles no solo son cruciales para determinar quién puede hacer qué en un sitio, sino que también facilitan la colaboración y gestión del contenido. Al asignar roles adecuadamente, se puede garantizar una administración fluida y eficiente, manteniendo la integridad y seguridad del contenido.

 Cómo gestionar los roles desde el backend de WordPress

  • Añadir un nuevo usuario: Ve a ‘Usuarios’ > ‘Añadir nuevo’.
  • Modificar el rol de un usuario: En ‘Usuarios’, haz clic en ‘Editar’ bajo el nombre del usuario y cambia el rol desde el menú desplegable.
  • Añadir y quitar privilegios a un usuario: Esto requiere plugins adicionales o funciones personalizadas.
  • Crear y eliminar roles personalizados: Los roles personalizados pueden crearse con plugins específicos o mediante código personalizado.

Tabla de roles y sus permisos

Permiso/Rol Administrador Editor Autor Colaborador Suscriptor
Editar páginas
Publicar páginas
Editar publicaciones ✓ (solo sus propias publicaciones)
Publicar publicaciones
Modificar plugins
Modificar temas
Gestionar usuarios
Acceder al backend (wp-admin) ✓ (pero con acceso limitado)

Herramientas y plugins para gestionar roles y permisos

Creación de roles personalizados en WordPress

WordPress, por defecto, viene con un conjunto de roles predeterminados: Administrador, Editor, Autor, Colaborador, Suscriptor y Super Administrador (para multisitios). Sin embargo, es posible que, dependiendo de tu proyecto, necesites roles más específicos con capacidades personalizadas. Veamos cómo puedes lograr esto tanto manualmente como con plugins:

1. Utilizando un Plugin:

El plugin «User Role Editor» es una de las herramientas más populares para esta tarea:

Pasos:

  1. Instalación del Plugin:
    • Ve a tu panel de administración de WordPress.
    • Navega a ‘Plugins’ > ‘Añadir nuevo’.
    • Busca «User Role Editor» y procede a instalarlo y activarlo.
  2. Creación de un Rol Personalizado:
    • En el menú de WordPress, ve a ‘Usuarios’ > ‘User Role Editor’.
    • Haz clic en ‘Add Role’.
    • Introduce el nombre del rol (sin espacios) y un nombre para mostrar.
    • Selecciona las capacidades que quieres asignar a este rol.
    • Haz clic en ‘Update’.

Ventajas: La interfaz es intuitiva y facilita la asignación de capacidades específicas a cada rol. Además, te permite clonar roles existentes y modificarlos según tus necesidades.

2. Manualmente (a través del código):

Si prefieres no utilizar un plugin, puedes agregar roles personalizados mediante funciones en el archivo functions.php de tu tema.

Pasos:

  1. Ve al área de administración de WordPress.
  2. Navega a ‘Apariencia’ > ‘Editor de temas’.
  3. Selecciona el archivo functions.php.
  4. Añade alguno de los  siguientes códigos por roles  ( ejemplos, puedes coger sus permisos y crearte uno a tu gusto).:

1. Rol para Desarrolladores:

function rol_desarrolladores() {
    add_role(
        'desarrollador',
        __('Desarrollador'),
        array(
            'read' => true,
            'activate_plugins' => true,         // Activar plugins
            'edit_plugins' => true,             // Editar plugins
            'install_plugins' => true,          // Instalar plugins
            'update_plugins' => true,           // Actualizar plugins
            'edit_files' => true,               // Editar archivos
            'edit_themes' => true,              // Editar temas
            'install_themes' => true,           // Instalar temas
            'update_themes' => true,            // Actualizar temas
            'edit_theme_options' => true,       // Editar opciones del tema
            'unfiltered_html' => true           // Insertar HTML sin filtros
        )
    );
}
add_action('init', 'rol_desarrolladores');

 

2. Rol para redactores:


function rol_redactores() {
    add_role(
        'redactor',
        __('Redactor'),
        array(
            'read' => true,
            'edit_posts' => true,               // Editar entradas
            'publish_posts' => true,            // Publicar entradas
            'delete_posts' => true,             // Borrar sus propias entradas
            'edit_published_posts' => true,     // Editar entradas publicadas
            'upload_files' => true              // Subir archivos
        )
    );
}
add_action('init', 'rol_redactores');

3. Rol para Administradores:


function rol_administradores() {
    add_role(
        'administrador_personalizado',
        __('Administrador Personalizado'),
        array(
            'read' => true,
            'edit_users' => true,               // Editar usuarios
            'create_users' => true,             // Crear usuarios
            'delete_users' => true,             // Borrar usuarios
            'list_users' => true,               // Listar usuarios
            'remove_users' => true,             // Remover usuarios
            'promote_users' => true,            // Promocionar usuarios
            'edit_dashboard' => true,           // Editar el tablero
            'manage_options' => true,           // Administrar opciones
            'moderate_comments' => true,        // Moderar comentarios
            'manage_categories' => true,        // Administrar categorías
            'manage_links' => true,             // Administrar enlaces
            'edit_theme_options' => true,       // Editar opciones del tema
            'install_plugins' => true,          // Instalar plugins
            'update_plugin' => true,            // Actualizar plugins
            'delete_plugins' => true,           // Borrar plugins
            'install_themes' => true,           // Instalar temas
            'update_themes' => true,            // Actualizar temas
            'delete_themes' => true             // Borrar temas
            'edit_posts' => true,               // Editar entradas
            'publish_posts' => true,            // Publicar entradas
            'delete_posts' => true,             // Borrar sus propias entradas
            'edit_published_posts' => true,     // Editar entradas publicadas
            'upload_files' => true              // Subir archivos
        )
    );
}
add_action('init', 'rol_administradores');

4.Rol donde tienes permisos para hacer de todo:


function crear_rol_super_admin() {
    // Obtiene el objeto de roles de WordPress
    $wp_roles = wp_roles();
    
    // Define todas las capacidades
    $all_capabilities = array();
    foreach ($wp_roles->roles as $key => $role) {
        foreach ($role['capabilities'] as $capability => $enabled) {
            $all_capabilities[$capability] = true;
        }
    }

    add_role(
        'super_admin',       // Identificador del rol
        __('Super Admin'),  // Nombre para mostrar
        $all_capabilities   // Todas las capacidades
    );
}
add_action('init', 'crear_rol_super_admin');

6. Impedir que un usuario se cambie o cambie a alguien a administrador

Este código esta hecho para poder limitar el número de administradores en un WordPress.


function limitar_rol_administrador($user_id) {
    // Si el usuario es un administrador, no hagas nada (esto permite que los administradores actuales sigan siendo administradores)
    if (user_can($user_id, 'administrator')) {
        return;
    }
    
    // Si se está tratando de asignar el rol de administrador, revierte a 'suscriptor'
    if (isset($_POST['role']) && $_POST['role'] == 'administrator') {
        $user = new WP_User($user_id);
        $user->set_role('subscriber'); // Cambia 'subscriber' al rol que desees asignar por defecto
    }
}
add_action('profile_update', 'limitar_rol_administrador');
add_action('user_register', 'limitar_rol_administrador');

Guarda los cambios.

Nota: Siempre es recomendable hacer una copia de seguridad antes de realizar cambios en tu sitio, especialmente si optas por el método manual. Además, si decides utilizar el código, considera crear un tema hijo para no perder tus cambios cuando actualices el tema principal.

Personalización: El código tiene algunos comentarios como // Ejemplo: 'gerente' que indican que es un valor de ejemplo. Los lectores deben cambiar 'nombre_del_rol' y __('Nombre para Mostrar') por los valores que deseen.

Recomendaciones al asignar roles

  • Dar acceso mínimo necesario: Es fundamental ser cauteloso al asignar permisos. Brinda únicamente las capacidades estrictamente necesarias para llevar a cabo tareas específicas. Evita dar permisos excesivos que podrían poner en riesgo la seguridad o la integridad del sitio.
  • Limitar el número de administradores: Mientras más administradores tenga un sitio, mayor es el riesgo de sufrir problemas de seguridad o cambios no deseados. Es recomendable tener un número limitado de administradores y asegurarse de que sean personas de confianza.
  • Personalización de roles según necesidades del sitio: No todos los sitios web tienen las mismas necesidades ni funcionan de la misma manera. En algunos casos, los roles predeterminados de WordPress podrían no ser suficientes. En esos escenarios, es aconsejable crear roles personalizados que se ajusten exactamente a lo que el sitio requiere.
  • Educación y capacitación: Asegúrate de que cada usuario entienda sus responsabilidades y las implicaciones de sus acciones en el sitio. Proporcionar formación sobre la gestión de contenidos y la importancia de la seguridad puede prevenir muchos problemas.
  • Revisión periódica de roles y capacidades: Con el tiempo, las necesidades del sitio pueden cambiar, al igual que las personas que contribuyen a él. Es bueno revisar regularmente los roles asignados y hacer ajustes según sea necesario.

Roles en sitios WordPress Multisite

Gestionar roles en una red multisite de WordPress tiene sus propias complejidades. Dado que una red multisite permite tener múltiples sitios bajo una sola instalación de WordPress, la estructura de roles se amplía. Aquí, encontramos el rol de Super Admin, que tiene control sobre todos los sitios en la red. Este rol puede, por ejemplo, instalar o eliminar plugins y temas para toda la red.

Sin embargo, es fundamental entender que aunque el Super Admin tenga estas capacidades amplias, los sitios individuales dentro de la red todavía necesitan administradores, editores y otros roles. Estos roles funcionan en gran medida de la misma manera que en un sitio WordPress estándar, pero con algunas restricciones impuestas por el Super Admin.

Una buena práctica es limitar el número de Super Admins y configurar roles específicos para cada sitio individual, garantizando que cada sitio pueda operar eficientemente mientras se mantiene una estructura global coherente.


function limitar_numero_super_admins() {
    // Obtener la lista actual de Super Admins
    $super_admins = get_super_admins();

    // Si ya hay 3 o más Super Admins, muestra un mensaje de error
    if (count($super_admins) >= 3) {
        wp_die('Se ha alcanzado el límite de Super Admins. No puedes asignar más.');
    }
}
add_action('grant_super_admin', 'limitar_numero_super_admins');

Este código verifica el número de Super Admins antes de intentar asignar un nuevo Super Admin. Si ya hay 3 o más, se mostrará un mensaje de error.

Recuerda que esto es un método rudimentario y no cubre todas las situaciones posibles. Por ejemplo, no evita que un programador con acceso directo a la base de datos modifique la lista de Super Admins. Pero para un uso estándar en el panel de administración de WordPress, este código debería ser suficiente.

Conclusión

La gestión adecuada de roles y capacidades en WordPress es esencial para mantener un sitio web seguro, eficiente y bien organizado. Desde definir los permisos mínimos necesarios, limitar el número de administradores, hasta adaptar roles según las demandas únicas de tu sitio; estas prácticas son cruciales para una administración eficaz. Además, la flexibilidad de WordPress permite a los usuarios avanzar hacia configuraciones más complejas, como los multisitios.

Si estás considerando expandir tu presencia en línea o administrar múltiples sitios desde un solo panel, te recomendamos leer nuestro detallado artículo sobre WordPress Multisite. En resumen, una gestión adecuada, junto con las herramientas y configuraciones adecuadas, te permitirá aprovechar al máximo las capacidades de WordPress.

Preguntas Frecuentes

¿Puedo asignar múltiples roles a un usuario en WordPress?

Por defecto, WordPress no permite asignar múltiples roles. Sin embargo, algunos plugins te permiten hacerlo.

¿Es posible eliminar un rol predeterminado de WordPress?

Sí, con la ayuda de plugins o código personalizado, puedes eliminar roles predeterminados. Pero ten cuidado al hacerlo.

¿Qué sucede si cometí un error al asignar un rol?

No te preocupes, puedes cambiar el rol de un usuario en WordPress en cualquier momento desde el backend.

¿Los roles afectan la seguridad de mi sitio?

Definitivamente. Un rol inapropiadamente asignado puede dar acceso a áreas sensibles de tu sitio, lo cual es un riesgo de seguridad.

Alejandro Frades marketing specialist Modular
Autor
Alejandro Frades
Marketing Specialist
La mente detrás de los contenidos sociales de Modular. Siempre al tanto de las últimas tendencias para aprovecharlas y hacer que el mundo digital sea más ameno y entretenido.

Suscríbete a nuestra Newsletter sobre el mundo web