插件停用三周,站点健康页还是每天弹出 A scheduled event has failed: abc_sync_orders,工具里的定时任务列表也还能看到这条记录,一分钟触发一次。后台没有装别的同步插件。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,事件在激活时写进 cron 选项,停用只让回调不再注册,事件本身没人清。WP-Cron 到点仍会触发这个空钩子,5.1 之后会把它记成失败事件,记录一直留在列表里。

「停用后定时任务未清除」这类改动最怕改一半,回滚脚本先准备好,再动生产。报错里带路径的,先去看那个路径在不在、权限对不对。

register_deactivation_hook(__FILE__, function () {
    wp_clear_scheduled_hook("abc_sync_orders");
});
// 临时排查:
wp cron event list --hook=abc_sync_orders

同一份配置存在多处的,先确认改的是被加载的那一份。

具体做法是,在停用钩子里调用清除函数 把该钩子的所有时间戳删掉;确认清除代码写在停用回调里 而不是激活回调;清完打开定时任务列表 手动扫一遍残留的同类事件。

最后用这个标准收尾,定时任务列表里不再出现 abc_sync_orders,站点健康页的失败提示第二天没有新增。

作者 9823189