【问题标题】:Open ad clicking anywhere in wordpress在 wordpress 中的任意位置点击打开广告
【发布时间】:2015-06-05 02:27:27
【问题描述】:

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

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

您好。

【问题讨论】:

    标签: wordpress hyperlink


    【解决方案1】:

    就像setcookie function reference 所说:

    cookies 必须在脚本的任何输出之前发送


    第一个解决方案

    你可以在最顶部添加这个哦 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() 之前,您的一个模板文件中可能有一些字符,或者插件可以添加一些东西)。

    相反,您应该向 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; ?>>
    

    【讨论】:

    • 它不再工作了。每次我点击任何地方时,它都会再次打开链接。
    • check 如果 cookie 是在您的浏览器中创建的,如果没有,请尝试在空的 PHP 文件上使用 setcookie 设置 cookie 以查看它是否有效
    猜你喜欢
    • 2014-04-27
    • 1970-01-01
    • 2014-06-05
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多