¿Cómo establecer programáticamente el rol predeterminado para nuevos usuarios?
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.

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.

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.

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

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