Cómo crear un rol clonado en WordPress

19 oct 2011, 08:33:43
Vistas: 23.2K
Votos: 28

Cómo crear un nuevo rol con las mismas capacidades de un rol existente. Por ejemplo: Me gustaría crear un nuevo rol con las mismas capacidades de un administrador o editor, etc.

```php // Obtener capacidades del rol existente $role = get_role('administrator'); // o 'editor', 'author', etc. $capabilities = $role->capabilities; // Crear nuevo rol con las mismas capacidades add_role('nuevo_rol', 'Nombre del Nuevo Rol', $capabilities); ``` ```php // Ejemplo completo de función function crear_rol_clonado() { // Obtener el rol que queremos clonar $rol_origen = get_role('administrator'); // Verificar si el rol existe if(!empty($rol_origen)) { // Crear nuevo rol con las mismas capacidades add_role( 'nuevo_rol_admin', // Slug del rol 'Nuevo Rol Admin', // Nombre visible $rol_origen->capabilities // Capacidades ); } } add_action('init', 'crear_rol_clonado'); ```
2
Comentarios

¿Qué has intentado? ¿Qué funcionó? ¿Qué no? ¿Has probado el plugin Members? ¿O el plugin Capability Manager? ¿Hacen lo que necesitas?

soulseekah soulseekah
19 oct 2011 08:42:02

Puedes usar el User Role Editor si prefieres hacer todo visualmente :)

User User
19 oct 2011 13:57:22
Todas las respuestas a la pregunta 5
3
44

Prueba esto... Debería funcionar.

<?php
add_action('init', 'cloneRole');

function cloneRole()
{
    global $wp_roles;
    if ( ! isset( $wp_roles ) )
        $wp_roles = new WP_Roles();

    $adm = $wp_roles->get_role('administrator');
    //Agregando un 'new_role' con todas las capacidades de admin
    $wp_roles->add_role('new_role', 'Mi Rol Personalizado', $adm->capabilities);
}
?>

Compruébalo.

19 oct 2011 08:56:14
Comentarios

¡Cuidado! Parece que esto clona el rol antes de que los plugins añadan roles y capacidades. Probaré con admin_init para ver si funciona mejor.

spankmaster79 spankmaster79
21 ene 2014 19:21:41

@spankmaster79 ¡Sí, por favor! Eso sería genial.

Rutwick Gangurde Rutwick Gangurde
22 ene 2014 08:00:22

@RutwickGangurde No funcionó mejor. El plugin sigue ignorando el rol.

spankmaster79 spankmaster79
24 ene 2014 17:42:46
0

Siempre puedes utilizar el plugin User Role Editor:

  1. Instala el plugin
  2. Ve a Usuarios > User Role Editor
  3. Haz clic en "Add Role" a la derecha
  4. Selecciona el rol que deseas duplicar del menú desplegable "Make copy of" en el cuadro de diálogo
  5. Haz clic en "Add Role" en el cuadro de diálogo
25 may 2017 17:35:07
0

supongamos que deseas clonar el editor.

$edr = $wp_roles->get_role('Editor');
add_role('clonerole', 'roles clonados', $edr->capabilities);
28 abr 2017 09:21:12
0

el sistema que funcionó en mi caso es este:

<?php
add_action('init', 'cloneRole');

function cloneRole() {
 $adm = get_role('administrator');
 $adm_cap= array_keys( $adm->capabilities ); //obtener capacidades del administrador
 add_role('new_role', 'Mi Rol Personalizado'); //crear nuevo rol
 $new_role = get_role('new_role');
  foreach ( $adm_cap as $cap ) {
   $new_role->add_cap( $cap ); //clonar capacidades del administrador al nuevo rol
  }
}
?>
16 jul 2018 13:50:49
0

A partir de 2024, clonar un rol se logra mejor con el wp comando CLI de roles, por ejemplo:

wp role create 'nuevo-rol' 'Nuevo-rol' --clone 'rol-existente'
21 may 2024 15:28:31