我已将以下内容添加到我的Wordpress functions.php文件中,以便每5秒将一封邮件发送到输入的电子邮件地址,但是它不起作用。我添加了一些日志记录以检查作业是否运行了钩子,但这只是对其进行初始化而已:
add_filter( 'cron_schedules', 'five_seconds_interval' );
function five_seconds_interval( $schedules ) {
$schedules['five_seconds'] = array(
'interval' => 5,
'display' => esc_html__( 'Alle 5 Sekunden' ),
);
return $schedules;
}
add_action('init', 'schedule_my_cron',10);
function schedule_my_cron(){
error_log("schedule_my_cron()");
wp_schedule_event(time(), 'five_seconds', 'my_job');
}
function my_job() {
error_log("my_job()");
wp_mail('test@localhost.de', 'Cronjob funktioniert!', 'LOL', 'Von IBims');
}
这是我在日志文件中得到的:
[14-Nov-2018 17:31:24 UTC] schedule_my_cron()
我还禁用了我的配置文件中Wordpress的常规cronjob:
define('DISABLE_WP_CRON',true);
在此之后,我创建了一个工作正常的unix cronjob。因此,我期望每5秒运行一次unix cronjob时,我会将邮件发送到该地址。怎么了?
更新
我可以确认自定义计划已成功添加,这是wp get schedules()
输出的一部分:
[five_seconds] => Array
(
[interval] => 5
[display] => Alle 5 Sekunden
)
答案 0 :(得分:3)
根据the documentation for the function,您需要对计划中调用的函数使用add_action()
,而不是执行计划的函数。 wp_schedule_event()
的第三个参数是动作挂钩的名称,而不是函数名称。尝试这样的事情:
register_activation_hook(__FILE__, 'schedule_my_cron');
add_action('init', 'schedule_my_cron',10);
function schedule_my_cron(){
error_log("schedule_my_cron()");
wp_schedule_event(time(), 'five_seconds', 'my_five_second_event');
}
add_action('my_five_second_event', 'my_job');
function my_job() {
error_log("my_job()");
wp_mail('test@localhost.de', 'Cronjob funktioniert!', 'LOL', 'Von IBims');
}