You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress开发:登录设置/登出删除额外Cookie的代码放置PHP文件咨询

嗨,我来帮你搞定这个需求!

在WordPress里,你完全不需要修改核心文件(绝对别碰核心文件,更新会直接覆盖你的代码),最稳妥的方式是把代码放到以下位置:

推荐的代码放置位置
  • 子主题的functions.php文件:这是最优选择,因为子主题不会被父主题的更新覆盖,能保证你的代码一直生效。如果还没创建子主题,花几分钟弄一个很值得。
  • 父主题的functions.php文件:如果暂时不想弄子主题,也可以直接放这里,但记得每次主题更新前备份代码,不然更新后代码就没了。
  • 自定义插件文件:如果你正在开发自己的插件,把代码放到插件的主PHP文件里也完全没问题,这样代码和主题解耦,切换主题也不受影响。
具体代码示例

下面是实现登录设Cookie、登出删Cookie的完整代码,直接复制到上面说的文件里就行:

登录时设置Cookie

// 监听登录动作,设置自定义Cookie
add_action('wp_login', 'set_custom_login_cookie', 10, 2);
function set_custom_login_cookie($user_login, $user) {
    // 这里可以自定义Cookie名称、值,过期时间设为24小时(86400秒)
    setcookie(
        'custom_user_session', // Cookie名称,你可以改成自己的
        $user->user_email,     // Cookie值,这里用用户邮箱,你也可以换其他用户字段
        time() + 86400,        // 过期时间:当前时间+24小时
        COOKIEPATH,            // 路径,用WordPress内置常量保证和默认Cookie一致
        COOKIE_DOMAIN,         // 域名,同样用内置常量
        is_ssl(),              // 仅在HTTPS下发送Cookie(如果你的站是HTTPS,这个会自动生效)
        true                   // 开启HttpOnly,提升安全性,防止XSS攻击
    );
}

登出时删除Cookie

// 监听登出动作,删除自定义Cookie
add_action('wp_logout', 'delete_custom_login_cookie');
function delete_custom_login_cookie() {
    // 删除Cookie的关键是把过期时间设为过去的时间,参数要和设置时完全一致
    setcookie(
        'custom_user_session',
        '',
        time() - 3600, // 过期时间设为1小时前,确保浏览器删除它
        COOKIEPATH,
        COOKIE_DOMAIN,
        is_ssl(),
        true
    );
}
注意事项
  • 一定要保证Cookie的参数(路径、域名、HttpOnly等)和WordPress默认Cookie一致,不然可能出现Cookie无法正常读取或删除的问题。
  • 如果你需要在前端读取这个Cookie,注意如果开启了HttpOnly,JavaScript是无法读取的,这是安全设计;如果需要前端访问,可以把最后一个参数改成false,但不推荐,尽量用后端处理。

内容的提问来源于stack exchange,提问作者Raghupati Dagu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:54:03