There are a few things going on there that need to be tweaked. The code below should do what you need.
- The setting of the cookie shouldn’t query for is the user logged-in. This can’t be relied upon to return
true
on a login request. Just rely on thewp_login
hook to assure you that the user is logging in. - I’ve set this with a long cookie lifetime – i.e 1 week. using the WordPress constant
WEEK_IN_SECONDS
. You can change this by replacingWEEK_IN_SECONDS
with a number (of seconds) you want it to last. - The deletion of the cookie is done by setting a low/negative value so that it’s essentially “expired”
- Important: Make sure this is added to your
functions.php
or anywhere you can be sure it will be executed in-time before a login request is processed.
add_action( 'wp_login', 'add_custom_cookie' );
function add_custom_cookie() {
setcookie( 'cookie_name', 'cookie value', time()+WEEK_IN_SECONDS );
}
// To Remove Cookie
add_action( 'wp_logout', 'remove_custom_cookie' );
function remove_custom_cookie() {
setcookie( 'cookie_name', '', -1000000 );
}