运营点了两次保存,后台列表出现两条标题完全相同的公告,ID 连号,发布时间差 0.3 秒,前台首页并排显示两遍。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

wp_nonce_field( 'notice_save', 'notice_nonce' );
if ( ! wp_verify_nonce( $_POST['notice_nonce'], 'notice_save' ) ) { return; }

表单没有一次性令牌,提交按钮也没在请求发出后禁用,第二次点击带着同样的数据又进了一次。写入前没做标题重复检查。这一点先确认清楚,后面就不用反复试。

「公告重复创建」这类改动最怕改一半,回滚脚本先准备好,再动生产。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

具体做法是,表单加 nonce 字段,处理时用 wp_verify_nonce 校验;提交后立刻禁用按钮并显示加载状态,防止连点;入库前按标题和发布时间查一次,重复的直接跳过。

改完照着核一遍,连续点两次只生成一条公告,列表里不再出现连号重复项。

作者 9823189