登录时勾了记住我,第三天打开后台又要重新登录,浏览器里那条 cookie 已经不见了,只能重新输一遍,很影响体验。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

add_filter('auth_cookie_expiration',
  function ($len, $uid, $remember) {
    return $remember ? 30 * 86400 : 2 * 86400;
  }, 10, 3);

认证 cookie 的有效期由过滤器和常量共同决定,安全插件或主题把期限改短,勾选等于没勾,一个月变成两天,用户完全感觉不到。这一点先确认清楚,后面就不用反复试。

「WordPress 记住登录失效」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

具体做法是,确认登录表单提交的时候带上了记住登录的参数;检查认证 cookie 的那层过期过滤器是不是被人改短了;清掉旧 cookie 之后重新登录,隔一天再看一次登录状态。

改完照着核一遍,勾选记住登录后关掉浏览器再打开,后台仍保持登录状态,不用重输密码。

作者 9823189