¿Cómo establecer programáticamente el rol predeterminado para nuevos usuarios?

22 oct 2011, 11:22:15
Vistas: 34.6K
Votos: 15

Me gustaría que los nuevos usuarios del blog tengan un rol personalizado, en lugar de Suscriptor. ¿Cómo puedo establecer esto programáticamente? Sé que se puede cambiar desde el backend.

0
Todas las respuestas a la pregunta 4
0
18

Esto permite que los plugins puedan fácilmente sobreescribir el rol predeterminado mientras están activos.

// Sobreescribe la opción, ¡el rol seguirá este valor!
add_filter('pre_option_default_role', function($default_role){
    // También puedes agregar condicionales aquí y retornar lo que necesites
    return 'subscriber'; // Este valor será el nuevo rol
    return $default_role; // Esto permite mantener el valor predeterminado
});

Yo lo uso para asegurarme que algunos plugins que requieren el rol de suscriptor lo obtengan, sin importar los intentos del Administrador por cambiarlo :)

Saludos.

22 oct 2011 15:48:39
2

Cuando un nuevo usuario se crea a través de la función wp_insert_user(), el rol se establece con el método set_role() de la clase User y se configura como el rol de usuario predeterminado.

El rol de usuario predeterminado se recupera de la base de datos con get_option('default_role') y se puede configurar desde el Panel de Administración yendo a Ajustes > Generales > Rol predeterminado para nuevos usuarios.

Si has registrado tu nuevo rol (usando add_role()), debería estar disponible allí para seleccionarlo.

Alternativamente, para tener más control puedes enlazarte a las acciones user_register o profile_update para luego asignar el rol (set_role) condicionalmente, o como prefieras.

22 oct 2011 11:34:52
Comentarios

Marcaré el tuyo como correcto, aunque la respuesta real resultó ser tan simple como update_option('default_role', 'custom_role_name') al activar el plugin.

jayarjo jayarjo
22 oct 2011 12:05:31

Me alegra haber sido de ayuda.

soulseekah soulseekah
22 oct 2011 12:09:53
1

Después de crear el usuario usando

$user_id = wp_create_user( $user_login, $pas1, $user_email );

Crea el objeto de usuario

$user = new WP_User($user_id);

Luego establece el rol

$user->set_role('editor');

Puedes reemplazar el rol 'editor' con cualquiera de los siguientes:

  • Administrador

  • Editor

  • Autor

  • Colaborador

  • Suscriptor

22 oct 2011 11:27:25
Comentarios

asegúrate de que el rol esté en minúsculas: autor, editor, administrador, colaborador, suscriptor

Tamik Soziev Tamik Soziev
20 ene 2021 05:17:35
2

Colócalo en el Plugin o functions.php de tu tema

//Hacer que 'Client' sea un rol por defecto

update_option('default_role','client');
16 sept 2015 22:41:48
Comentarios

¿Por qué?? No tiene ningún sentido colocar tu código en algún lugar sin saber qué hace o cómo funciona

Pieter Goosen Pieter Goosen
16 sept 2015 22:58:14

Esa no es una buena solución. Esto ejecutará una consulta de actualización si no se coloca en una acción especial en cada solicitud.

Maciej Paprocki Maciej Paprocki
2 abr 2018 22:33:59