如果你在WordPress主题文件中直接使用php的setcookie()来发送cookie,那是完全不行的。setcookie()文档中有一条内容:必须在任何其他输出发送前对 cookie 进行赋值,我怀疑WordPress初始化的时候已经发送了其他输出,才导致setcookie失效。下面介绍一种方法设置cookie。
方法/步骤
1
在主题文件functions.php中添加以下代码,以设置cookie:
2
/** * 函数名称,setcookie的相关参数等可以自行修改 */function set_newuser_cookie() { if (!isset($_COOKIE['sitename_newvisitor'])) { setcookie('sitename_newvisitor', 1, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false); }} add_action( 'init', 'set_newuser_cookie');// 上面一行代码也可以改成下面一行代码// add_action('after_setup_theme', 'set_newuser_cookie
3
然后在需要调用cookie值的地方读取cookie
4
if (isset($_COOKIE['sitename_newvisitor'])) { echo 'Welcome back!';}else { echo 'Hello new visitor!';}