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

如何在数据库中保存用户最后登出时间?WordPress代码问题排查

代码失效原因

代码无法正常运行核心是WordPress钩子触发时机与API调用逻辑不匹配:

  • wp_logout钩子触发时,WordPress已经完成当前用户的会话清理、登录态销毁流程,此时调用get_current_user_id()无法获取到正在执行登出操作的用户ID,默认返回0,update_user_meta找不到ID为0的有效用户,自然不会写入有效数据
  • 你在挂载钩子时声明了要接收1个传入参数,但自定义的user_last_logout函数没有设置形参接收参数——wp_logout钩子本身会把正在登出的用户ID作为第一个参数传入回调,你没有使用这个不受登录态影响的准确数据源。
正确实现方案

直接从钩子传入的参数获取登出用户ID,不要在回调里依赖当前登录态获取用户ID,参考代码如下:

function user_last_logout( $user_id ){
  // 校验用户ID有效性,避免异常场景下写入脏数据
  if ( empty( $user_id ) || ! get_user_by( 'id', $user_id ) ) {
    return;
  }
  update_user_meta( $user_id, '_last_logout', time() );
} 
add_action( 'wp_logout', 'user_last_logout', 10, 1 );

补充说明:如果站点使用了自定义登出逻辑、第三方单点登录插件,部分场景可能不会触发原生wp_logout钩子,需要对应适配插件提供的登出钩子才能完整覆盖所有登出场景;原生WordPress核心登出流程下上述代码可正常运行。

内容的提问来源于stack exchange,提问作者Dominick Siqueira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:09:35