ALTER TABLE wp_subscribers ADD consent_at DATETIME NULL, ADD consent_ip VARCHAR(45) NULL, ADD policy_version VARCHAR(20) NULL;
用户投诉从没订阅过,后台只有邮箱和创建时间,勾选隐私政策那一步没留下任何记录,运营翻遍日志也说不清当时页面长什么样。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,表单只校验了 agree 字段是否为 1,没有把勾选时间、IP 和当时版本的协议号写进库。协议改版之后,旧记录连对应哪一版都判断不了。
「订阅同意留痕」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
处理上按这个顺序:在订阅表加 consent_at、consent_ip、policy_version 三列,提交时一起写入;协议每次改版换一个版本号,表单里带上隐藏字段,别用当前版本覆盖历史;导出记录时把这三列一起带上,投诉时能直接出示。
改完只确认一件事:新提交的记录三项都有值,同一邮箱的历史记录保留着当初的协议版本号。
