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

为何WordPress用户元数据profile_updated未在数据库中显示?

解决WordPress用户资料更新时间戳仅生效一次的问题

问题根源

你的代码存在三个关键问题,导致时间戳仅能记录一次:

  1. 函数名冲突:update_user_profile是WordPress内置函数,用于渲染用户编辑页面表单,自定义函数重名会导致无法正常触发。
  2. 元数据更新逻辑错误:add_user_meta的第四个参数设为true时,会将profile_updated标记为唯一元数据,一旦创建就无法再次更新。
  3. 用户ID获取不准确:wp_get_current_user()获取的是当前登录用户ID,当管理员编辑其他用户资料时,时间戳会错误保存到管理员的元数据中。

修正后的代码

// 记录用户资料更新时间戳
function custom_save_profile_updated_timestamp( $user_id ) {
    // 获取当前WordPress时间戳
    $datetime = current_time('timestamp');
    // 更新或创建用户元数据:存在则覆盖,不存在则新增
    update_user_meta( $user_id, 'profile_updated', $datetime );
}
// 绑定到用户资料更新钩子,接收被编辑用户ID参数
add_action('edit_user_profile_update', 'custom_save_profile_updated_timestamp');

关键修改说明

  • 重命名函数:使用custom_save_profile_updated_timestamp避免与内置函数冲突,确保钩子能正确触发。
  • 使用钩子传递的用户ID:edit_user_profile_update钩子会自动传递被编辑用户的ID,保证时间戳保存到正确的用户元数据中。
  • 替换为update_user_meta:该函数会自动判断元数据是否存在,存在则更新值,不存在则创建,完美实现每次更新资料时覆盖旧时间戳的需求。

验证效果

无论是用户自行编辑个人资料,还是管理员后台编辑用户资料,profile_updated元数据都会被更新为最新的时间戳,解决了仅生效一次的问题。

内容的提问来源于stack exchange,提问作者Tabby Garcia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:10:13