我有wordpress网站,我正在使用此脚本
onclick="<?php if(!isset($_COOKIE['visited'])){echo"window.open('http://link', '_blank')"; setcookie("visited", "1", time()+3600*24); header("Refresh:0");} ?>"
在身体线条。所以这意味着我正在使用
<body <?php body_class(); ?> onclick="<?php if(!isset($_COOKIE['visited'])){echo"window.open('http://link', '_blank')"; setcookie("visited", "1", time()+3600*24); header("Refresh:0");} ?>">
在主题的header.php文件中。
但它会在每次点击时打开链接。 我想打开它只有一次,直到我刷新页面或打开新页面。 我该怎么做。 请帮忙。 提前谢谢。
问候。
答案 0 :(得分:0)
就像setcookie function reference说的那样:
cookie必须在脚本输出之前发送
你可以在最顶端添加这个哦header.php:
<?php
$onclick = '';
if(!isset($_COOKIE['visited'])) {
setcookie('visited', '1', time()+3600*24, COOKIEPATH, COOKIE_DOMAIN);
$onclick = 'onclick="window.open(\'http://link\', \'_blank\')"';
}
?>
更新:我已添加常量COOKIEPATH
和COOKIE_DOMAIN
,如explained here。
这适用于您的body
代码:
<body <?php body_class(); ?> <?php echo $onclick; ?>>
之前的解决方案并不确保在发送任何输出之前设置cookie(在调用get_header()
之前,您的某个模板文件中可能会有一些字符,或者插件可能会添加某些内容)。< / p>
相反,你应该在Wordpress钩子上添加一个动作,它总是在任何输出之前调用(如init
)。
所以尝试添加到你的functions.php文件:
add_action('init', 'set_visited_cookie');
function set_visited_cookie() {
if (!isset($_COOKIE['visited'])) {
setcookie('visited', '1', strtotime('+1 day'), COOKIEPATH, COOKIE_DOMAIN);
}
}
至于您的body
代码:
<body <?php body_class(); ?> <?php if(!isset($_COOKIE['visited'])): ?> onclick="window.open('http://link', '_blank')" <?php endif; ?>>