Wordpress / PHP:设置Cookie不起作用

时间:2018-12-15 22:05:41

标签: php wordpress

如果用户来自我的一个广告系列,我正在尝试在Wordpress中创建cookie。如果utm_source等于“ fb”或“ ob”,我想将cookie设置为“ source = fb或ob”,但是下面的代码似乎不起作用,则不会创建cookie。我在做什么错了?

<?php function strip_next_tags_action () { 
    global $post;
        if ( isset( $_GET['utm_source'] )  or $_GET['utm_source'] == 'fb' or $_GET['utm_source'] == 'ob') {
            setcookie( "source", $_GET['utm_source'], 30 * DAY_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN );
        }
        else {
            $post->post_content = str_replace("<!--nextpage-->", "",
                $post->post_content, $count);
        }
        return $post;
    }
    add_action ('loop_start', 'strip_next_tags_action'); ?>

1 个答案:

答案 0 :(得分:2)

影响cookie的功能不能位于single.php文件的开头-已经生成了输出,发送了标头,并且没有机会触摸cookie。

如果您查看所使用的action-loop_start-您会发现在输出HTML的其他操作之后 ,这为时已晚。

这应该在插件内,或在主题的functions.php文件中,并且必须在适当的action上调用-可能是wp动作最适合您的需求:

在主题的functions.php文件中:

function strip_next_tags_action () { 
    global $post;
    if ( isset( $_GET['utm_source'] )  or $_GET['utm_source'] == 'fb' or $_GET['utm_source'] == 'ob') {
        setcookie( "source", $_GET['utm_source'], 30 * DAY_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN );
    } else {
        $post->post_content = str_replace("<!--nextpage-->", "",
            $post->post_content, $count);
    }
}

add_action ('wp', 'strip_next_tags_action');