正如@Milo所说,WP-Cron只有在有人向WP请求某些内容时才会被触发,也就是访问任何WordPress页面(我还没有查到确切的细节,所以我不知道AJAX请求是否会触发预定事件)。
您说过您已经将主要任务分解为较小的任务—我认为您应该采用这种方法并将其实现到AJAX方法中。您应该将主任务分解为尽可能多的较小子任务,并将它们链接起来。第一个子任务完成后,发送另一个AJAX请求以执行下一个子任务。等等,直到一切都完成。您甚至不必依赖JavaScript来正确地链接事件—您只需在AJAX响应中为下一个直列子任务传递操作名称,并指示脚本只发送AJAX请求,其中包含从服务器返回的操作名称,直到服务器表示一切都已完成。这种类似MVC的方法将为您节省一些维护代码的时间-JS不必知道子任务的划分结构,它只会从服务器请求数据,直到服务器说一切都完成了。
对于用户体验来说,这也是最好的方法,因为您可以在每个子任务响应到达后持续向用户显示任务更新。更新用户在时间密集型任务中的进度是至关重要的。您甚至可以将子任务的进度/结果存储在数据库或cookie中,以便用户即使在意外导航出页面后也可以继续处理!