Más sobre los roles de usuario

12/34

Lectura

IMPORTANCIA DE LOS ROLES DE USUARIO

Los roles te permitirán gestionar los permisos de los usuarios dentro de tu sitio, es decir, qué puede y qué no puede hacer dentro del administrador. Estas acciones se denominan capabilities.

Esto es muy útil ya te permite segmentar las tareas de tus usuarios. Por ejemplo, si dentro de la web tienes a alguien cuya tarea es la de crear y corregir notas de blog, si le asignas el rol Editor a su usuario, este no va a poder agregar plugins ni modificar el contenido de las páginas, solo podrá crear y editar notas. Esta práctica es muy importante para garantizar la seguridad y la estructura de nuestro sitio.

Se pueden presentar casos en los que los roles por defecto no alcancen o sean demasiado restrictivos, para eso WordPress brinda la posibilidad de crear, eliminar y modificar roles.

CREAR UN ROL DE USUARIO

Para crear un rol de usuario podés utilizar la función add_role() que nos provee WordPress, la tenés que utilizar dentro de una función y asignarla al hook init. Esto tiene que hacerse desde el archivo functions.php.

function add_administrador_tema_role() { //nombre de nuestra función, puede ser el nombre que quieras
    add_role(
        'administrador_tema', //Nombre de role.
        'Administrador Tema', //Nombre que se visualará en la creación o página de opciones de usuarios.
       array(    
            'read' => true, //Permite el acceso al dashboard del adminitrador.
            'switch_themes' => true, //Permite el cambio de temas.
            'edit_themes'   => true, //Permite editar archivos desde el administrado de archivos del tema.
            'edit_theme_options' => true, //Permite modificar Widgets,Menús, Personalizar.
            'install_themes'    => true,  //Permite instalar temas nuevos.
            'update_themes' => true, //Permite actualizar temas instalados.
            'delete_themes' => true, //Permite eliminar temas.

            )   //Array con las capabilities
    );
}

//add_action(Hook, Nombre de la función)
add_action('init', 'add_administrador_tema_role'); 

Una vez que este código esté inicializado, el usuario ya quedará creado con esa configuración. Si necesitás eliminarlo, no bastará con eliminar la función, tendrás que usar el método que veremos a continuación.

ELIMINAR UN ROL DE USUARIO

Para eliminar un rol de usuario podés a utilizar la función remove_role() y, de la misma forma que para crearlo, tenés que utilizarla dentro de una función asignada al hook init, en el archivo function.php.

function remove_role_administrado_temas() { //Nombre de la función
    remove_role( 'administrador_tema' ); 
}
 
//add_action(Hook, Nombre de la función)
add_action( 'init', 'remove_role_administrado_temas' );

MODIFICANDO CAPABILITIES EN ROLES

Para agregar capabilities en un role, lo primero que tenés que hacer es instanciar el role dentro de una variable conla función get_role(). Una vez hecho eso puedes utilizar los métodos add_cap() y remove_cap().

En el siguiente ejemplo se le dará al role de usuario subscriptor el permiso para editar posts (entradas de blog, custom post type).


function add_cap_subscriber(){ //Nombre de la función
    $role = get_role( 'subscriber' ); //Instaciamos el role en la variable $role
    $role->add_cap( 'edit_posts'); //Agregamos la cabability usando el método add_cap().
}

//add_action(Hook, Nombre de la función)
add_action( 'init', 'add_cap_subscriber');

En el siguiente ejemplo se removerá al role de usuario editor, el permiso para modificar contenidos (entradas de blog, custom post type, etc).


function remove_cap_editor(){ //Nombre de la función
    $role = get_role( 'editor' ); //Instaciamos el role en la variable $role
    $role->remove_cap('edit_pages'); //Removemos la cabability usando el método remove_cap().
}

//add_action(Hook, Nombre de la función)
add_action( 'init', 'remove_cap_editor');

Podés ver la lista completa de capabilities por roles en la documentación oficial de WordPress, haciendo clic aquí.

Aportes 41

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Nota:
El path del fichero donde introducimos las modificaciones es:
C:\xampp\htdocs\platzigifts\wordpress\wp-includes\functions.php

Les recomiendo crear roles nuevos en lugar de modificar los actuales ya que asi se puede tener una mejor administración del sitio para futuros colaboradores.

Lo correcto seria crear un tema hijo y dentro de ese tema hijo hacer los cambios, de esa forma evitamos el riesgo de romper algo en el código fuente de wordpress

Pienso que esta clase debió ser en video.

Excelente explicación.

  • Aquí les dejo un enlace para que tengan mas información a través del Developer Hanbook de WordPress.

  • Y aquí la lista de capacidades de los usuarios por defecto de WordPress.

Capabilities = Capacidades que tendra el rol que asignemos a un usuario determinado. Excelente!!

Sería muy útil ampliar esta parte para entender mejor sobre la funcionalidad de remover usuarios.

OK se me hacìa mas sencilla de la forma de la clase pasada pero es bueno saberlo con codigo

Tengo una duda. Luego de agregar o remover los usuarios mediante la funciones descritas por el profesor ¿Esta información debe quedarse para siempre en el código del archivo function.php o se puede eliminar? No me quedó claro como opera esto.

ufff que loca es la programación, estoy empezando en este mundo y me encantaa wow jaja

se puede crear lo mismo usando un plugin ?

He agregado el código en el archivo functions.php de la ruta C:\xampp\htdocs\platzigifts\wp-includes

  • lo añadí en la línea 31,
  • guardé los cambios,
  • actualicé el sitio,
  • agregue un nuevo usuario y aparece el nuevo rol .

Funcionó

Ok se puede agregar nuevan Capabilities a un rol, peor se pueden crear nuevas Capabilities?

¿En cual de todos los “functions.php” tengo que escribir el código  🤔?

El ‘edit_pages’ aplica también para productos en WooCommerce o para CPT? Si queremos que por ejemplo solo pueda editar productos o un CPT concreto como lo deberíamos hacer?

En resumen debemos usar hooks para crear, modificar o eliminar capabilities de lo nuevos roles que vaya creando dentro del function.php.

Todo muy claro. Gracias

Muy interesante

Se puede crear un nuevo rol de usuario para ingresar productos en Woocomerce

profesor cristian, en que archivo functions.php se debe hacer esta modificacion ?

platzigifts\wp-content\themes\platzigift\functions.php
ó
\platzigifts\wp-includes\functions.php

esta genial que wordpress ya tenga funciones preestablecidas

Creo que lo mas sobresaliente de la clase es que estamos usando el hook de action add_action($hook, $action). Entonces, ya estamos poniendo en practica lo aprendido hace algunas clases y eso es genial

Mola tener esta info, puedes crear nuevos roles y darles los permisos que tu quieras y modificarlos a tu antojo, gracias!

No entendi muy bien esta clase. Es solo informativa o hay que hacer lo que dice?

posterior a esto se debe ver el resultado al crear un nuevo usuario en las opciones de perfil? a mí solo me aparecen las predeterminadas

¿Cómo puedo acceder por código desde un hosting gratuito?

Cuando voy a logearme con el usuario que le asigne el rol creado, no me muestra el panel de wordpress solo la pagina de mi cuenta,

Super útil tener el control y quitarle lo estricto a los roles predeterminados.

Genial esta información!!

Lo aplicaré y te cuento @Cristian Ramanzin !!!

Muy buena información.

lo practicare

Se debe manejar con cuidado estas funciones

Realmente, muy interesante. Lo voy a practicar. ! Gracias por la clase

Muy útil esta información. La grabo para siempre.

Esto no sabia todo lo hacia de forma visual, lo bueno que estoy aprendiendo.

Muy buen dato especialmente cuando deseamos crear roles a diferentes usuarios.

excelente

Es muy interesante poder hacer estas modificaciones para hacer tener una gestión más precisa en nuestro sitio.

¿ Es necesario crear un tema hijo para agregar, remover y editar los roles y así no se pierdan los cambios ?