我想在Wp3中安排一个cron作业。5.1向预约待定的客户发送电子邮件。
下面是我正在尝试的一些代码:
For the testing am scheduling corn for each second to insert row in table.
// insert row every second
add_action(\'wp\', \'my_activation\');
function my_activation() {
if ( !wp_next_scheduled( \'my_event\' ) ) {
wp_schedule_event( time(), \'hourly\', \'my_event\');
}
}
add_action(\'my_event\', \'do_this_event\');
function do_this_event() {
global $wpdb;
$wpdb->query("INSERT INTO `wordpress-testing`.`wp_test` (`id`, `text`) VALUES (NULL, \'b\');");
}
wp_get_schedules(\'my_event\');
//custom recurrence
add_filter( \'cron_schedules\', \'cron_add_every_sec\' );
function cron_add_every_sec( $schedules ) {
$schedules[\'hourly\'] = array(
\'interval\' => 1,
\'display\' => __( \'Do Secondly\' )
);
return $schedules;
}
这样做可能会出错。所以请帮我度过难关。
Is cron run automatically after activation once OR its need to recurring visit after scheduled time past?
SO网友:fischi
我认为每秒运行一个cron并没有什么用处,但函数本身非常简单。
将筛选器添加到cron_schedules
:
function f711_add_seconds( $schedules ) {
$schedules[\'everysecond\'] = array(
\'interval\' => 1,
\'display\' => __(\'Every Second\')
);
return $schedules;
}
add_filter( \'cron_schedules\', \'f711_add_seconds\' );
您现在可以使用
everysecond
在您的
wp_schedule_event
而不是
hourly
.
请注意,如果站点上没有发生任何事情,Cron不会每秒执行一次,但它将被限制为每秒最多执行一次。Cron在options
-下一次执行函数的时间戳。然后Cron检查时间是在未来还是在过去,如果是在过去,则执行该函数。Cron此时自动运行,但需要重新设置。所以一定要包括
if ( !wp_next_sceduled(\'my_event\') ) { /* scheduling code */ }
在代码中。
有关Cron工作原理的更多信息,请访问Codex Page.
不应覆盖hourly
正如您所做的,因为某些函数可能会使用此计划。请注意,如果没有正确编码,某些插件可能会清除您的Cronschedule(曾经有过这样的缓存插件)。