How to use wp-ajax in wp-cron

时间:2018-04-16 作者:John478

我已经创建了一个自定义wordpress插件,其中我使用的是wp ajax。在类的\\uu构造中,我有一个操作(admin\\u footer),以便在wp之后使用wp\\u enqueue\\u脚本和wp\\u localize\\u脚本instructions

因此,流程类似于php->js->和php

我为什么这么做?避免内存限制错误。Here 说得很好:“上面的解决方案通过将单个大型任务分解为多个小型任务来绕过PHP的限制”

一切都像一个后台的魅力!

我的问题是如何管理此过程以与wp cron一起工作?wp-cron是否可以与js一起工作?

我用我的自定义挂钩尝试了wp\\u schedule\\u事件,但没有成功(js永远不起作用)。

有什么想法吗?

当做

1 个回复
SO网友:kero

首先,考虑使用new REST API instead of Admin-AJAX 在JavaScript可用的环境中。

现在回答您的问题:JavaScript不可用于wp cron,因为这些请求只在服务器上运行,而不是在一些解释的HTML/JavaScript上运行。那么你能做什么呢?好吧,如果您还没有完成(或者您单独的工作负载已经完成),只需安排另一个事件即可。

虽然wp_schedule_event() 用于重复事件,还有wp_schedule_single_event() 可用于“尚未完成”的工作负载。

假设您想每天清理数据库,工作流可能如下所示

  1. wp_schedule_event() 至dail run函数clean_my_db()
  2. clean_my_db() 创建阵列$tables_to_clean = [\'posts\', \'postmeta\']. 现在你打电话wp_schedule_single_event() 要运行clean_my_db_table() 并将每个表作为参数传递
  3. clean_my_db_table(\'posts\') 运行clean_my_db_table(\'postemta\') 运行etc以总结:您有一个wp_schedule_event() 这是一个重复发生的事件。在此范围内,您决定拆分工作负载并通过wp_schedule_single_event() 在特定日期/时间。

结束