Cómo obtener todas las capacidades de un rol de usuario existente

21 may 2016, 19:10:10
Vistas: 20.2K
Votos: 5

¿Cómo puedo obtener TODAS las capacidades de un rol de usuario existente (por ejemplo, Autor)? Lo usaré para duplicar rápidamente un rol de usuario existente, luego crear un nuevo rol y asignar o eliminar capacidades a un nuevo rol personalizado.

1
Comentarios

¿Algo como get_role( $role )->capabilities por ejemplo get_role( 'author' )->capabilities ? ..

Ismail Ismail
21 may 2016 19:50:55
Todas las respuestas a la pregunta 1
2

Sugiero no modificar los roles y capacidades existentes por defecto, esto podría ahorrarte problemas cuando tengas una gran cantidad de roles y capacidades personalizados en el futuro.

Para responder a tu pregunta, pondré un ejemplo: necesito un nuevo rol/grupo de usuarios que tenga casi los mismos permisos que un Administrador pero que no tenga la capacidad de editar plugins y el tema, para hacerlo:

  1. Digamos que quieres copiar las capacidades existentes del Administrador, hazlo mediante:

    $admin_role_set = get_role( 'administrator' )->capabilities;
    
  2. Puedes crear un nuevo rol de usuario usando add_role, consulta el manual para más detalles. Luego podemos usar la lista de capacidades que obtuvimos en el paso #1 mediante:

    $role = 'content_admin';
    $display_name = 'Content Admin';
    add_role( $role, $display_name, $admin_role_set );
    
  3. Revisando la lista de Roles y Capacidades del manual, necesitaremos eliminar las capacidades edit_plugins y edit_themes, lo podemos lograr usando remove_cap():

    remove_cap( 'content_admin', 'edit_plugins' );
    remove_cap( 'content_admin', 'edit_themes' );
    
22 may 2016 09:19:41
Comentarios

En el tercer paso que describes, ¿no debería el rol proporcionado al método remove_cap ser 'content_admin' en lugar de 'editor' si estás continuando el ejemplo de eliminar la capacidad de editar plugins y el tema para el nuevo rol personalizado creado?

Kory Kory
7 may 2020 21:21:04

Editado según el comentario de @Kory

mayersdesign mayersdesign
19 ago 2021 14:16:41