WP Cron作业运行每页加载

时间:2016-08-28 23:31:25

标签: php wordpress cron

我正在尝试围绕wp cron作业,并且一直在玩下面的代码片段,它应该每小时发送一封电子邮件到指定的电子邮件地址,前提是访问者访问过该网站并触发了这项工作(wp cron的工作显然不是真正的chron工作,我已经明白了)。

现在,这项工作的工作原理是将电子邮件发送到电子邮件地址,但有两个问题:

  1. 每个chron作业多次发送电子邮件
  2. Cron作业似乎在每个页面加载时被触发,即使它不应该每小时运行超过一次
  3. 这是代码(从wp_schedule_event not firing重新审核):

    if ( ! wp_next_scheduled( 'prefix_hourly_event' ) ) {
        wp_schedule_event( time(), 'hourly', 'prefixhourlyevent');       
    }
    
    add_action( 'prefixhourlyevent', 'prefix_do_this_hourly' );
    
    function prefix_do_this_hourly() {       
       wp_mail('myemail@gmail.com','Cron is working', 'Cron is working: ','','');
    }
    

    有人能够让我知道为什么不是每小时发送一封电子邮件? // Mega WP Noob

1 个答案:

答案 0 :(得分:0)

您正在检查某个活动是否已安排,以及何时未找到您以其他名称注册的活动。不匹配是导致它在每个页面加载时运行的原因。

改变这个:

AudioServicesPlaySystemSound(1104)

对此:

if ( ! wp_next_scheduled( 'prefix_hourly_event' ) ) {

我还会看一下你是否可以检查一次计划而不是每次加载页面。如果你正在编写一个插件,你可以在插件激活钩子上激活它。

进一步阅读:https://codex.wordpress.org/Function_Reference/wp_schedule_event