如果用户来自我的一个广告系列,我正在尝试在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'); ?>
答案 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');