只有在Wordpress首次访问时才会出现闪屏

时间:2013-09-11 20:54:08

标签: php wordpress cookies setcookie

我试图在有人第一次访问Wordpress网站时出现启动画面。 我对PHP知之甚少,但设置和读取cookie似乎是一种简单的方法,所以我将其添加到 header.php

<?php if ( !isset($_COOKIE['accessed']) ) { 
    setcookie('accessed', 'yes', time() + (86400 * 30)); // 30 days
?>
    <script>
        // Some code
    </script>
<?php 
    } 
?>

脚本运行但cookie永远不会被设置,因此它会在每次访问时运行...

我在某处读到你无法用PHP在同一页面上设置和读取cookie,但如果这是真的那么我真的不知道应该如何实现它。

任何提示都会非常感激!

2 个答案:

答案 0 :(得分:1)

您需要在发送标题之前发送Cookie。

在Wordpress中,如果您只是将代码放在主题html中,它将无效。

您需要在functions.php文件中执行类似的操作

function checkAccessed(){
        if ( !isset($_COOKIE['accessed']) ) { 
            setcookie('accessed', 'yes', time() + 3600*24*30); 
            define("ACCESSED", false);
        }else{
            define("ACCESSED", true);
        }
}
add_action("init", "checkAccessed");

然后在你的主题html ..

<?php if(!ACCESSED){ ?>
  <script></script>
<?php } ?>

答案 1 :(得分:0)

cookie可能是一个路径cookie。所以基本上这个cookie只会被发送到一个页面。

你有萤火虫吗?如果您尝试“Cookie”标签进行检查。然后,您可以使用“网络”标签仔细检查Cookie是否实际上是由用户的浏览器发送的。

试试这个,改变时间的计算 - 不确定它是否有所作为,但这是我计算30天的方式:

<?php if ( !isset($_COOKIE['accessed']) ) { 
setcookie('accessed', 'yes', time() + 3600*24*30); // 30 days
?>
    <script>
    // Some code
    </script>
<?php 
    } 
?>