Cookie value cannot be read until I’ve logged into the WP admin

Once logged into the WP admin, I can refresh the front-end and see my cookie’s value outputted as “hello world”. If I log out of the admin, then refresh my front-end, the cookie’s value is now “nothing”, as seen in my example function.

This only happens when I’m viewing the website online. When testing locally, I can read the cookie without being logged into the WP admin. Any ideas?

Here’s my test function for setting the cookie

function test_cookie() {
    setcookie( 'test-cookie', 'hello world', time()+1209600, "https://wordpress.stackexchange.com/");
}
add_action( 'init', 'test_cookie' );

Here’s the function for outputting the cookie’s value onto the page

function output_test_cookie() {

    if ( isset( $_COOKIE['test-cookie'] ) )
        echo $_COOKIE["test-cookie"]; // should output hello world, but only does this when logged into WP admin
    else
        echo 'nothing';
}
add_action( 'template_redirect', 'output_test_cookie' );

1 Answer
1

It appears I needed to use an earlier hook. Using the wp or init action hooks allow me to read the cookie’s value without logging into the admin first.

function output_test_cookie() {

if ( isset( $_COOKIE['test-cookie'] ) )
    echo $_COOKIE["test-cookie"];
}
add_action( 'wp', 'output_test_cookie' ); // wp or init is needed

Leave a Comment