1

我正在尝试仅在有人第一次访问 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,但如果这是真的,那么我真的不知道应该如何实现它。

任何提示将不胜感激!

4

2 回答 2

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 } ?>
于 2013-09-11T22:21:33.827 回答
0

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

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

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

<?php if ( !isset($_COOKIE['accessed']) ) { 
setcookie('accessed', 'yes', time() + 3600*24*30); // 30 days
?>
    <script>
    // Some code
    </script>
<?php 
    } 
?>
于 2013-09-11T21:10:02.583 回答