如何在WordPress中设置Cookie而不出现“Headers Not Sent”错误?在WP内

时间:2016-07-16 作者:Terungwa

如何在WordPress中设置Cookie而不出现“headers not sent”错误?在WP中,我无法编写一个cookie来解析一个短代码,而不会得到所说的错误。请注意,下面的代码片段是一个较大插件代码的一部分。

add_shortcode(\'show_stats\', \'settings\');
function settings(){
if(!isset($_COOKIE[\'site_stats\']))
{
    // set a cookie that will expire in 5 minutes (date formats: \'years\', \'months\', \'days\', \'hours\', \'minutes\')
    $counter_cookie = setcookie(\'kobopulse_site_stats\', time(), 5* MINUTE_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN ); 
    }
    else
    {
        $counter_cookie = $_COOKIE[\'site_stats\']; 
    }
}
根据这个问题,Searching hook to set cookies before <head> and avoid "headers already sent", 挂钩到init 这样做很有技巧,但是在上面的上下文和插件中,我如何连接到init 除了我已经使用的add\\u shortcode函数之外?

1 个回复
SO网友:Terungwa

解决方案是设置一个连接到init的函数。

add_action(\'init\', \'stats_cookie\');
function stats_cookie()
{
    if(!isset($_COOKIE[\'site_stats\']))
    { 
        $current = current_time( \'timestamp\', 1);
        setcookie(\'site_stats\', $current, time()+60+60*24*7, COOKIEPATH, COOKIE_DOMAIN ); 
    }
}

相关推荐