¿Cómo configuro mediante programación la función predeterminada para los nuevos usuarios?

10

Me gustaría que los nuevos usuarios del blog tengan un rol personalizado, en lugar de suscriptor. ¿Cómo configuro esto mediante programación? Sé que se puede cambiar desde el backend.

jayarjo
fuente

Respuestas:

13

Esto permite que los complementos secuestran fácilmente la función predeterminada mientras están activos.

// Hijack the option, the role will follow!
add_filter('pre_option_default_role', function($default_role){
    // You can also add conditional tags here and return whatever
    return 'subscriber'; // This is changed
    return $default_role; // This allows default
});

Lo uso para asegurarme de que algunos complementos que necesitan roles de suscriptor lo obtengan independientemente de los intentos del administrador de cambiar :)

Saludos .

EarnestoDev
fuente
8

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

El rol de usuario predeterminado se recupera de la base de datos get_option('default_role')y se puede establecer a través del Panel de administración yendo a Configuración> General> Nuevo rol predeterminado de usuario.

Si ha registrado su nuevo rol (usando add_role(), debería estar disponible allí para elegir.

Alternativamente, para un mayor control, puede engancharse a las acciones user_registero profile_updatepara luego set_rolecondicionalmente, o como más le guste.

soulseekah
fuente
1
Marcaré la suya como correcta, aunque la respuesta real resultó ser tan simple como update_option ('default_role', 'custom_role_name') tras la activación del complemento.
jayarjo
Me alegro de haber sido de ayuda.
soulseekah
4

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 papel

$user->set_role('editor');

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

  • Administrador

  • Editor

  • Autor

  • Contribuyente

  • Abonado

Delphi Electronice
fuente
1

Póngalo en Pluging o functions.php de su tema

//Make 'Client' a default role

update_option('default_role','client');
usuario80490
fuente
2
¿¿Por qué?? No tiene ningún propósito poner su código en algún lugar sin saber lo que hace o cómo funciona
Pieter Goosen
Esa no es una buena solución. Esto ejecutará una consulta de actualización si no se realiza una acción especial en cada solicitud.
Maciej Paprocki