Volver al Blog

Cómo redirigir a los usuarios después de iniciar sesión según su rol en WordPress

2022-02-142 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:

  1. https://wordpress.org/plugins/role-based-redirect/
    1. Documentación: https://wordpress.org/plugins/role-based-redirect/
  2. https://wordpress.org/plugins/peters-login-redirect/
    1. 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.

Categorías:

Etiquetas: