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:
-
Peter's Login Redirect
- Offers role-based redirects
- Supports URL-based redirects
- Includes conditional logic
-
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