Gestión de Roles y Permisos de Usuario en WordPress
Los roles de usuario 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.
functionadd_administrador_tema_role(){//nombre de nuestra función, puede ser el nombre que quierasadd_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.
functionremove_role_administrado_temas(){//Nombre de la funciónremove_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).
functionadd_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).
functionremove_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í.
Nota:
El path del fichero donde introducimos las modificaciones es:
C:\xampp\htdocs\platzigifts\wordpress\wp-includes\functions.php
Gracias, no sabia donde estaba, gracias por aclararlo
Creo que seria mejor hacerlo en el function.php de cada theme o en su defecto en el function.php de algun plugin que destines a crear roles.
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.
opino lo mismo
A mi me gusto en formato de lectura, ya que al final, la mayoría de la documentación en internet es en formato de artículos o lecturas
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.
Capabilities = Capacidades que tendra el rol que asignemos a un usuario determinado. Excelente!!
se puede crear lo mismo usando un plugin ?
Hola! Si, se puede hacer lo mismo en un plugin. :)
@cristian ¿Es mejor con plugin o directo desde el código?
ufff que loca es la programación, estoy empezando en este mundo y me encantaa wow jaja
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
opino lo mismo
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.
La puedes eliminar, mientras no se cree en alguna otra instancia del codigo
Si mal no recuerdo, a la hora de borrar un Usuario, no basta con borrar la linea de código, sino que tendremos que usar el comando remove_role(), para luego crear otro si es lo que deseas.
¿En cual de todos los "functions.php" tengo que escribir el código 🤔?
Yo lo agregue en la carpeta del tema que estoy utilizando. El path seria el siguiente: "wp-content/themes/tu_tema_actual/functions.php".
pd: estoy utilizando docker pero supongo la estructura de las carpetas debe ser la misma.
Hola Emmanuel! En la siguiente clase podrás saldar esa duda :)
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?
hola !
quien me dice en que carpeta se aloja el archivo functions.php ? que me permite crear , eliminar y modificar roles?
gracias :)
C:\xampp\htdocs\platzigifts\wp-includes
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