WP-cron 作业已添加,但未运行



我以前从未创建过 CRON 作业,到目前为止我的尝试还没有产生任何切实的结果!

为了进行测试,我使用了另一个站点的示例,并添加了一些代码,使其在作业运行时简单地发送和发送电子邮件,在本例中为每小时一次。

这是我的代码:

add_action("my_hourly_event"、"do_this_hourly");

function my_activation() {
    if ( !wp_next_scheduled( 'my_hourly_event' ) ) {
        wp_schedule_event( current_time( 'timestamp' ), 'hourly', 'my_hourly_event');
    }
}
add_action('wp', 'my_activation');
function do_this_hourly() {
    // do something every hour
    $to      = 'jon@mydomain.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@mydomain.com' . "rn" .
    'Reply-To: webmaster@mydomain.com' . "rn" .
    'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);

    // do something every hour

}

现在使用<?php echo '<pre>'; print_r( _get_cron_array() ); echo '</pre>'; ?>我可以看到WordPress确实看到了我创建的内容

[1485859289] => Array
    (
        [my_hourly_event] => Array
            (
                [40cd750bba9870f18aada2478b24840a] => Array
                    (
                        [schedule] => hourly
                        [args] => Array
                            (
                            )
                        [interval] => 3600
                    )
            )
    )

但是我无法弄清楚为什么没有发送电子邮件以及我需要做些什么来解决问题。

我希望这里有人可以帮助解决这个问题?

感谢您阅读:)

我认为当你需要调用你的钩子时,你可能会直接在wp_next_scheduled函数中调用你的函数。

因此,调度程序函数(对你来说,它是"my_activation")检查钩子(对你来说,它是"wp"),钩子检查函数(对你来说,它是"my_hourly_function"),函数发送电子邮件。

您的电子邮件功能do_this_hourly()不会在任何地方调用。因此,调度程序正在调度一个 cron,但在触发时没有运行的功能。 试试这个:

function my_activation_scheduler() {
    if ( !wp_next_scheduled( 'my_activation_action' ) ) {
        wp_schedule_event( current_time( 'timestamp' ), 'hourly', 'my_activation_action');
    }
}
add_action('my_activation_action', 'my_hourly_function');
function my_hourly_function() {
    // do something every hour
    $to      = 'jon@mydomain.com';
    $subject = 'the subject';
    $message = 'hello';
    $headers = 'From: webmaster@mydomain.com' . "rn" .
       'Reply-To: webmaster@mydomain.com' . "rn" .
       'X-Mailer: PHP/' . phpversion();
    mail($to, $subject, $message, $headers);
    // do something every hour
}

这是未经测试的,但我相信它应该有效。 我没有检查您的邮件代码,但其他一切在我的脑海中看起来都正确:P

编辑 - 我没有看到您的其他操作,因为它在代码块之外,但我上面的代码仍然应该可以解决问题。

最新更新