Cómo redirigir a los usuarios después de iniciar sesión según su rol en WordPress
2022-02-14•2 min de lectura
Si tu sitio/proyecto de WordPress necesita que los usuarios sean redirigidos a diferentes páginas después de iniciar sesión correctamente, basándose en sus roles, puedes usar cualquiera de los siguientes plugins:
- https://wordpress.org/plugins/role-based-redirect/
- Documentación: https://wordpress.org/plugins/role-based-redirect/
- https://wordpress.org/plugins/peters-login-redirect/
- Documentación: https://loginwp.com/docs/
¿Qué pasa si quieres mantener bajo el número de plugins y hacer la redirección con código personalizado?
Puedes usar un fragmento como el siguiente (puedes añadir el código en el archivo functions.php o en un plugin personalizado existente):
/**
* Redirigir a los usuarios después de iniciar sesión.
* @param $redirect_to
* @param $request
* @param $user
* @return mixed|string|void
*/
function my_site_login_redirect( $redirect_to, $request, $user ) {
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( 'administrator', $user->roles ) || in_array( 'editor', $user->roles ) ) {
$redirect_to = admin_url();
} else if ( in_array( 'customer', $user->roles ) ) {
$redirect_to = home_url( '/shop/' );
} else {
$redirect_to = home_url('/shop');
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'my_site_login_redirect', 10, 3 );
Una breve explicación sobre el código
El código implementa el filtro login_redirect
El código comprueba si el usuario tiene el rol de administrador o editor; si es así, el usuario es redirigido a la página del panel de administración, de lo contrario, si el usuario tiene el rol de cliente vip, el usuario es redirigido a la página /custom-dashboard, cualquier otro usuario será redirigido a la página /shop.