编写wordpress插件和主题的时候,经常需要用到cookie,比如存取用户状态等,我之前编写的插件Ludou Simple Vote就用cookie来记录用户投票时间,以实现简单的防止重复投票功能。 但是如果你在wordpress主题文件中直接使用PHP的setcookie()来发送cookie,那是完全不行的。setcookie()文档中有一条内容:必须在任何其他输出发送前对 cookie 进行赋值,我怀疑wordpress初始化的时候已经发送了其他输出,才导致setcookie失效。于是深入搜索了Google,从一篇老外的文章中获得了以下方法: 1、在主题文件functions.PHP中添加以下代码,以设置cookie: <div class="msgborder" id="PHPcode35"> /* 函数名称,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');