【问题标题】:How to use wordpress cron job with a custom function from the plugin?如何将 wordpress cron 作业与插件中的自定义功能一起使用?
【发布时间】:2016-07-04 16:21:50
【问题描述】:

我正在为 woocommerce 开发一个自定义插件。在那个插件中,功能就像它会每 24 小时获取所有用户并给他们发送电子邮件。因此,即使没有访问网站,也每 24 小时做一次工作,我认为我需要一个 cron 工作。 因此,通过搜索 wordpress cron 作业,我得到了 wp_schedule_event 函数。但在这里我 不明白如何使用它?我的意思是该功能将如何工作 这里?我有我的自定义功能来获取所有用户并向他们发送电子邮件但是如何 与wp_schedule_event 一起使用该功能以及如何调用wp_schedule_event 功能 来自插件,这样即使没有人访问该站点,它也会静默工作。 任何帮助和建议都将非常可观。谢谢

【问题讨论】:

  • Tooting my own horn :D 服务器 cron 作业(非 wp)将执行,无论您的站点是否被访问,而 wp_cron 取决于站点访问,但一旦有人访问它就会触发。但是我认为使用 wp_cron 比使用服务器更安全,因为如果服务器崩溃并且您错过了时间戳,则 cron 将不会执行(根据我对 cron 作业的有限理解),而对于 wp_cron 它将在下一次运行有人访问,即使网站已关闭...

标签: php wordpress cron


【解决方案1】:

您需要将插件功能映射到一个操作,然后将该操作安排到 Wordpress cron。

// ---- Schedule cron event for custom plugin function.
add_action('init', 'custom_plugin_function_event');
function custom_plugin_function_event() {
    if (wp_next_scheduled('custom_plugin_action') == false) {
        wp_schedule_event(time(), 'daily', 'custom_plugin_action');
    }
    add_action('custom_plugin_action', 'custom_plugin_function');
}

// ---- Execute custom plugin function.
function custom_plugin_function() {
    // Do something here
}

上面的例子是程序代码。将 custom_plugin_function() 替换为您的插件函数的名称。

【讨论】:

  • 所以即使没有人访问该站点也可以使用?因为我可以看到你使用了init 钩子,并且这个钩子需要在站点加载时运行。所以要做到这一点,有人必须访问该网站吗?我想在不访问网站的情况下运行该功能
  • 不,伙计。它仅在用户访问该站点(第一次)时执行。这就是 WP cron 的工作原理。如果你想安排一个 cron 事件,即使没有人访问一个站点,你必须通过 Linux cron 以老式的方式进行。
  • 我用过,但它不起作用。你可以在这里查看我的另一个问题stackoverflow.com/questions/36316336/…
猜你喜欢
  • 1970-01-01
  • 2021-08-02
  • 2015-04-21
  • 2018-10-23
  • 1970-01-01
  • 2012-07-04
  • 2021-06-03
  • 1970-01-01
  • 2014-11-03
相关资源
最近更新 更多