Wordpress cron – 事件添加到队列但未触发

Wordpress cron – event added to queue but not firing

我正在尝试挂接到 woocommerce_order_status_changed 操作并将单个事件添加到 wp cron 以立即执行(这样请求-响应周期就不会被阻塞):

add_action('woocommerce_order_status_changed', 'on_new_status', 10, 3);
add_action('send_new_status_custom_hook', 'logic_on_new_status', 10, 2);
function on_new_status($order_id, $from, $to){
  wp_schedule_single_event(time(), 'send_new_status_custom_hook', array($from, $to));
}
function logic_on_new_status($first, $second){
  // code
}

事件添加到cron(我可以使用插件看到它),但没有执行。当我手动点击 "execute" 时,它 执行。

可能是什么问题?

我正在使用 Wordpress 5.3.2。

谢谢!

您好,您正在使用 Wordpress 的 cron,但一些插件禁用或阻止 CRON 工作。 在这种情况下,我的建议是您通过服务器 Cron 创建此计划,或者安装一个插件来重新确认您的计划

这里想到的一件事是,为什么您需要使用 cron?如果你的下一个函数是运行紧接着另一个,就运行那个时候的那个函数。无需添加到 cron。 Cron 通常用于安排需要 运行 定期安排的事情,不一定用于 运行 在另一个函数 运行.

之后一次执行一个函数

此外,请检查您的 Wordpress 时区与服务器时区。这偶尔会让人绊倒。

我找到了解决办法!这个问题是由我的防火墙设置引起的...

他们阻止了 wp-cron 正常运行所需的环回。

安装这个插件:https://wordpress.org/plugins/wp-crontrol/ 给我看了 错误信息 "cURL error 28".

从那里,我弄明白了。