The auth_cookie_expired WordPress PHP action fires once an authentication cookie has expired.
Usage
add_action('auth_cookie_expired', 'your_custom_function', 10, 1); function your_custom_function($cookie_elements) { // your custom code here }
Parameters
$cookie_elements
(string[]): Authentication cookie components. None of the components should be assumed to be valid as they come directly from a client-provided cookie value.username
(string): User’s username.expiration
(string): The time the cookie expires as a UNIX timestamp.token
(string): User’s session token used.hmac
(string): The security hash for the cookie.scheme
(string): The cookie scheme to use.
More information
See WordPress Developer Resources: auth_cookie_expired
Examples
Log expired authentication cookies
Log expired authentication cookies for debugging purposes.
add_action('auth_cookie_expired', 'log_expired_auth_cookie', 10, 1); function log_expired_auth_cookie($cookie_elements) { error_log('Expired auth cookie: ' . print_r($cookie_elements, true)); }
Redirect user to custom login page
Redirect users to a custom login page when their authentication cookie expires.
add_action('auth_cookie_expired', 'redirect_to_custom_login_page', 10, 1); function redirect_to_custom_login_page($cookie_elements) { wp_redirect('/custom-login-page'); exit; }
Notify admin when a user’s authentication cookie expires
Send an email to the admin when a user’s authentication cookie expires.
add_action('auth_cookie_expired', 'notify_admin_auth_cookie_expired', 10, 1); function notify_admin_auth_cookie_expired($cookie_elements) { $admin_email = get_option('admin_email'); $subject = 'User auth cookie expired'; $message = 'User: ' . $cookie_elements['username'] . ' - Auth cookie expired.'; wp_mail($admin_email, $subject, $message); }
Invalidate session tokens when authentication cookie expires
Invalidate user session tokens when their authentication cookie expires.
add_action('auth_cookie_expired', 'invalidate_session_tokens', 10, 1); function invalidate_session_tokens($cookie_elements) { $user = get_user_by('login', $cookie_elements['username']); if ($user) { $session_tokens = get_user_meta($user->ID, 'session_tokens', true); foreach ($session_tokens as $token => $session) { if ($session['expiration'] <= time()) { wp_destroy_current_sessions(); } } } }
Extend authentication cookie expiration time
Extend the expiration time of authentication cookies when they expire.
add_action('auth_cookie_expired', 'extend_auth_cookie_expiration', 10, 1); function extend_auth_cookie_expiration($cookie_elements) { $user = get_user_by('login', $cookie_elements['username']); if ($user) { wp_set_auth_cookie($user->ID, false, $cookie_elements['scheme']); } }