Code Snippet to Redirect Users After Login in WordPress

Sven H Jan 4, 2025 User Experience
Can I send my users to a different page after they log in?
What PHP code snippet can I use to redirect users to a specific page after they successfully log into my WordPress site?
Andy answered Jan 4, 2025

Custom Code Solution

Add this code to your theme's functions.php file or in a site-specific plugin. This code hooks into WordPress's login process and redirects users to a specific URL after successful login:

function custom_login_redirect($redirect_to, $request, $user) {
    // Check if user is logged in and no errors occurred
    if (isset($user->roles) && is_array($user->roles)) {
        // Change this URL to your desired redirect location
        return home_url('/dashboard/');
    }
    return $redirect_to;
}
add_filter('login_redirect', 'custom_login_redirect', 10, 3);

For role-based redirects, use this enhanced version:

function custom_login_redirect_by_role($redirect_to, $request, $user) {
    if (isset($user->roles) && is_array($user->roles)) {
        // Redirect based on user role
        switch (true) {
            case in_array('administrator', $user->roles):
                return admin_url();
            case in_array('subscriber', $user->roles):
                return home_url('/member-area/');
            case in_array('customer', $user->roles):
                return home_url('/my-account/');
            default:
                return home_url();
        }
    }
    return $redirect_to;
}
add_filter('login_redirect', 'custom_login_redirect_by_role', 10, 3);

Alternative Plugin Solutions

If you prefer a plugin solution, these options are reliable:

  1. Peter's Login Redirect
  • Offers role-based redirects
  • Supports URL-based redirects
  • Includes conditional logic
  1. Theme My Login
  • Customizes login pages
  • Includes redirect features
  • Offers additional login customization options

Important Notes

  • Test the redirect functionality in incognito mode to avoid cache issues
  • Ensure the redirect URL exists and is accessible to the user role
  • Consider using wp_safe_redirect() for additional security if modifying the code
  • The code assumes clean URLs are enabled in WordPress