最近有用户提出一个需求:希望在子比主题的后台能实现一键签到,甚至每天自动给部分用户签到,让勇敢排行榜更有活力。
这个功能听起来简单,但实际开发过程中遇到了很多子比主题特有的兼容性问题。从最初的简单代码,到最终的稳定版,我和用户一起经历了多次迭代调试,整整花了几天时间。
今天把整个开发过程完整记录下来,供大家参考,也方便以后自己回顾。
一、初始需求(2026年2月28日)
用户需求非常明确:
- 前台用户可以正常手动签到
- 后台管理员可以一键/批量代签
- 签到必须真实上勇敢排行榜(连续天数、今日已签到列表都要显示)
- 最好能实现每天自动随机签到一部分用户
二、开发过程全记录(关键节点)
第1阶段:基础功能 + 后台菜单 一开始我直接写了自定义函数 + AJAX + 后台菜单。结果激活后出现PHP Deprecated警告和白屏。 解决办法:改为独立插件形式,并严格使用 current_time() 处理时区(新加坡 +8)。
第2阶段:激活失败 + 简化版本 插件激活报 Fatal Error。 我连续提供了极简测试版 → 子比兼容版,最终定位到函数名冲突和PHP 8.x严格参数顺序问题。
第3阶段:排行榜不更新(最难的一步) 用户反馈:前台手动签到能上排行榜,后台代签却不行。 经过多次调试,发现子比主题签到依赖多个专有meta键 + 钩子触发。 我先后尝试:
- 更新所有 zib_ 前缀字段
- 强制清除当天记录
- 优先调用主题内置函数 zib_do_checkin() / zib_user_checkin()
- 触发 zib_user_checkin_success 等钩子
- 清除所有缓存
v1.9版本终于成功:用户确认后台签到能正常显示在勇敢排行榜和今日已签到列表。
第4阶段:添加批量 + 自动随机 在v1.9基础上:
- 增加批量勾选一键签到
- 添加WP Cron定时任务(每天凌晨00:05)
- 后台新增设置页面(开关 + 随机比例)
第5阶段:插件更新记录 用户要求加上「插件更新记录」页面,我直接在后台增加了Changelog子菜单,方便以后跟踪每次迭代。
三、最终功能列表(v2.2-final)
- 手动签到:单个强制签到 + 批量一键签到(支持全选)
- 自动签到:每天凌晨00:05自动随机签到指定比例用户(后台可开关 + 修改比例)
- 签到记录:所有签到(手动/自动)都实时记录
- 插件更新记录:专门的Changelog页面
- 完全兼容子比主题:积分、经验、连续天数、排行榜全部正常
四、总结与感谢
这个功能从最初的简单代码,到最终的稳定完整版,前后迭代了20多个版本。 最难的地方在于子比主题的签到逻辑非常封闭,必须同时满足meta字段 + 钩子 + 缓存清除三个条件才能上排行榜。
特别感谢用户charles的耐心测试和反馈!每次出现问题都第一时间提供截图和日志,让我能快速定位。正是因为这种高效配合,才让这个功能在短短几天内从想法变成可直接使用的插件。
更新记录
项目代码




.jpg)












- 最新
- 最热
只看作者