使初始屏幕仅在首次访问 Wordpress 时显示


Make a splash screen appear only on first visit in Wordpress

我试图让启动画面仅在有人第一次访问Wordpress网站时出现。我对PHP了解不多,但是设置和读取cookie似乎是一种简单的方法,所以我将其添加到标题中.php

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

但 cookie 从未设置过,因此它在每次访问时都会运行......

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

任何提示将不胜感激!

您需要在发送标头之前发送cookie。

在Wordpress中,如果你只是把这些代码放在你的主题html中,它将无法工作。

你需要在你的函数.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 } ?>
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 
    } 
?>