wordpress计划事件未在设定时间内触发

时间:2016-03-30 18:02:07

标签: php wordpress cron wordpress-plugin cron-task

在WordPress中,我正在创建一个插件,我向用户发送电子邮件。为此,我使用WordPress cron工作。所以基本上它只会在每小时向用户发送电子邮件。 所以我的代码看起来像这样

public function __construct() {
    add_action('init', array( $this, 'send_emails_to_users') );  
    add_action('cliv_recurring_cron_job', array( $this, 'send_email') );
}

public function send_emails_to_users() {
  if(!wp_next_scheduled('cliv_recurring_cron_job')) {
          wp_schedule_event (time(), 'hourly', 'cliv_recurring_cron_job');
    }
}

public function send_email() {
    //send email code goes here
}

这里的一切看起来不错,但它不会发送电子邮件。

如果我像这样制作我的代码

public function __construct() {
    add_action('head', array( $this, 'send_email') );  
}

然后发送电子邮件。但问题是,每次页面加载或用户访问网站时都会发送电子邮件。

这就是我想用wp_schedule_event每小时发送电子邮件的原因。

有人可以告诉我如何解决这个问题吗?

任何建议或帮助都会非常明显。

2 个答案:

答案 0 :(得分:0)

首先, 1)如果要动态工作,则需要在服务器中设置crontab 2)如果你想手动wordpress调度程序将在页面运行后调用

所以,

下面的crontab设置是有用的链接: crontab

答案 1 :(得分:0)

如果您想每隔一小时运行一次cron,则需要添加以下代码:

public function __construct() {
    // Call function for cron
    add_action('init', array( $this, 'send_emails_to_users') );
}

public function send_emails_to_users() {
    if(!wp_next_scheduled('cliv_recurring_cron_job')) {
        // Add "cliv_recurring_cron_job" action so it fire every hour
        wp_schedule_event(time(), 'hourly', 'cliv_recurring_cron_job');
    }
}

add_action('cliv_recurring_cron_job', array( $this, 'send_email') );
public function send_email() {
    //send email code goes here
}

了解更多信息see link