The auth_redirect WordPress PHP action fires before the authentication redirect.
Usage
add_action('auth_redirect', 'your_custom_function', 10, 1); function your_custom_function($user_id) { // your custom code here return $user_id; }
Parameters
$user_id
(int): User ID.
More information
See WordPress Developer Resources: auth_redirect
Examples
Redirect user to a custom login page
Redirect users to a custom login page if they are not logged in.
add_action('auth_redirect', 'redirect_to_custom_login_page', 10, 1); function redirect_to_custom_login_page($user_id) { if (0 === $user_id) { wp_redirect('/custom-login/'); exit; } return $user_id; }
Redirect users based on their role
Redirect users to different pages based on their role after login.
add_action('auth_redirect', 'redirect_users_based_on_role', 10, 1); function redirect_users_based_on_role($user_id) { $user = get_userdata($user_id); $roles = $user->roles; if (in_array('administrator', $roles)) { wp_redirect('/admin-dashboard/'); } elseif (in_array('subscriber', $roles)) { wp_redirect('/subscriber-dashboard/'); } exit; }
Restrict access to specific pages
Restrict access to a list of pages based on user roles.
add_action('auth_redirect', 'restrict_access_to_specific_pages', 10, 1); function restrict_access_to_specific_pages($user_id) { $restricted_pages = array(10, 15, 20); // Page IDs $current_page_id = get_queried_object_id(); if (in_array($current_page_id, $restricted_pages)) { $user = get_userdata($user_id); $roles = $user->roles; if (!in_array('administrator', $roles)) { wp_redirect(home_url()); exit; } } return $user_id; }
Log user activity
Log user activity before authentication redirect.
add_action('auth_redirect', 'log_user_activity', 10, 1); function log_user_activity($user_id) { $user = get_userdata($user_id); $username = $user->user_login; // Log user activity error_log("User {$username} (ID: {$user_id}) logged in."); return $user_id; }
Add custom user meta on login
Add custom user meta data on every login.
add_action('auth_redirect', 'add_custom_user_meta_on_login', 10, 1); function add_custom_user_meta_on_login($user_id) { $login_count = get_user_meta($user_id, 'login_count', true); if ($login_count) { $login_count++; } else { $login_count = 1; } update_user_meta($user_id, 'login_count', $login_count); return $user_id; }