打开广告点击wordpress中的任意位置

时间:2015-03-31 16:38:44

标签: wordpress hyperlink

我有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文件中。

但它会在每次点击时打开链接。 我想打开它只有一次,直到我刷新页面或打开新页面。 我该怎么做。 请帮忙。 提前谢谢。

问候。

1 个答案:

答案 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\')"';
}
?>

更新:我已添加常量COOKIEPATHCOOKIE_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; ?>>