| name | login-redirector |
| description | Handle WordPress login/logout redirects. Use when implementing custom redirect logic. |
Login Redirector
Instructions
When setting up login or logout redirects:
- Login redirect: Use
login_redirectfilter - Logout redirect: Use
logout_redirectfilter - Parameters: Both receive
$redirect_to,$request,$user - Return the redirect URL
Filter Parameters
add_filter('login_redirect', $callback, 10, 3);
add_filter('logout_redirect', $callback, 10, 3);
/**
* @param string $redirect_to The redirect destination URL
* @param string $request The requested redirect destination URL
* @param WP_User|WP_Error|null $user The logged-in user or error
*/
Common Patterns
1. Redirect by User Role
add_filter('login_redirect', 'retrologin_redirect_by_role', 10, 3);
function retrologin_redirect_by_role(string $redirect_to, string $request, $user): string {
if ($user instanceof WP_User) {
if (user_can($user, 'administrator')) {
return admin_url();
}
return home_url('/dashboard/');
}
return $redirect_to;
}
2. Keep Requested URL
add_filter('login_redirect', 'retrologin_keep_request', 10, 3);
function retrologin_redirect_keep_request(string $redirect_to, string $request, $user): string {
// Use the page they were trying to access
if (!empty($request) && strpos($request, 'wp-admin') === false) {
return $request;
}
return $redirect_to;
}
3. Custom Logout Redirect
add_filter('logout_redirect', 'retrologin_logout_redirect', 10, 3);
function retrologin_logout_redirect(string $redirect_to, string $requested_redirect_to, $user): string {
return home_url('/thank-you/');
}
Guidelines
- Always check if
$useris a valid WP_User - Handle WP_Error cases (failed login)
- Return
$redirect_toas fallback - Test redirects with different user roles