Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Añadir algunas capacidades a un tipo de usuario (rol) en WordPress

Imago voragine.net
[actualizado el ]

WordPress dispone de cinco tipos de usuario, cinco roles, con capacidades diferentes —existe un sexto rol que únicamente se activa en las instalaciones de WordPress Multisite. Hay veces que ninguno de estos tipos se ajusta exáctamente al uso que un usuario hará de una página con WordPress. En estos casos podemos añadir o eliminar capacidades o permisos a uno de los cinco tipos de usuario, para adaptarlo a nuestras necesidades.

Un caso típico en WordPress se da con el tipo de usuario colaborador. Los colaboradores pueden crear contenido en WordPress pero no publicarlo, de manera que un usuario con más permisos tiene que revisarlo. Los colaboradores sin embargo no tienen capacidad para añadir imágenes a los contenidos que crean.

Para añadir esta capacidad, por ejemplo, al tipo de usuario colaborador se puede añadir la siguiente función al archivo functions.php del theme:

/* añadir capacidades a un tipo de usuario */
function prefijo_add_rol_caps(){
        global $pagenow;
        // definimos el rol a modificar
        $role = get_role( 'contributor' );

        if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) ){ 
                // Si el theme está activado
                $role->add_cap( 'upload_files' );

        }   else {
                // Si el theme se desactiva
                // Eliminamos la capacidad
                $role->remove_cap( 'upload_files' );

        }
}
add_action( 'load-themes.php', 'prefijo_add_rol_caps' );

Las capacidades de cada rol se guardan en base de datos, por eso es conveniente añadirlas cuando se activa un theme y eliminarlas cuando se desactiva, así los cambios sólo afectan al theme en concreto con el que estemos trabajando, no al conjunto del sistema.

Actualización 10 julio 2015. El snippet anterior añade las capacidades al rol en cuestión pero las elimina cuando hay una actualización de WordPres y no cuando el theme se desactiva. Una versión mejorada se puede consultar en la entrada Ejecutar acciones al activar o desactivar un theme en WordPress.

2 comentarios

  1. Hola que tal y si quiero que un determinado rol tambien pueda editar la apariencia del sitio

  2. Hola Christopher,

    el código de este post te vale para cualquier capacidad que quieras añadir a un rol determinado. Puedes consultar el listado completo de capacidades por rol, seleccionar el que te interese (en tu caso edit_theme_options) y añadirlo mediante la línea $role->add_cap( 'edit_theme_options' );.

Dejar un comentario

*
*

 

No hay trackbacks