The auth_cookie_valid WordPress PHP action fires once an authentication cookie has been validated. It is used to perform additional tasks or checks after the cookie validation process.
Usage
add_action('auth_cookie_valid', 'your_custom_function', 10, 2);
function your_custom_function($cookie_elements, $user) {
// your custom code here
}
Parameters
$cookie_elements(string[]): Authentication cookie components.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.
$user(WP_User): User object.
More information
See WordPress Developer Resources: auth_cookie_valid
Examples
Log successful logins
Log each successful user login to a custom table in the database.
add_action('auth_cookie_valid', 'log_successful_login', 10, 2);
function log_successful_login($cookie_elements, $user) {
global $wpdb;
$table_name = $wpdb->prefix . 'successful_logins';
$wpdb->insert(
$table_name,
array(
'username' => $cookie_elements['username'],
'login_time' => current_time('mysql')
)
);
}
Custom user greeting
Display a custom greeting for the user after a successful login.
add_action('auth_cookie_valid', 'custom_user_greeting', 10, 2);
function custom_user_greeting($cookie_elements, $user) {
set_transient('user_greeting_' . $user->ID, 'Welcome, ' . $user->display_name . '!', 60);
}
Increase user login count
Increase the user login count each time a user logs in.
add_action('auth_cookie_valid', 'increase_user_login_count', 10, 2);
function increase_user_login_count($cookie_elements, $user) {
$login_count = (int) get_user_meta($user->ID, 'login_count', true);
update_user_meta($user->ID, 'login_count', ++$login_count);
}
Apply custom user role capabilities
Modify the user capabilities based on a custom user role.
add_action('auth_cookie_valid', 'apply_custom_user_role_capabilities', 10, 2);
function apply_custom_user_role_capabilities($cookie_elements, $user) {
if (in_array('custom_role', $user->roles)) {
$user->add_cap('custom_capability');
}
}
Restrict access based on IP
Restrict user access to the website based on the user’s IP address.
add_action('auth_cookie_valid', 'restrict_access_based_on_ip', 10, 2);
function restrict_access_based_on_ip($cookie_elements, $user) {
$allowed_ips = array('192.168.1.1', '192.168.1.2');
$user_ip = $_SERVER['REMOTE_ADDR'];
if (!in_array($user_ip, $allowed_ips)) {
wp_logout();
wp_redirect(wp_login_url());
exit;
}
}