如何使用wp_Schedule_Event()更正我每周的活动计划

时间:2016-11-14 作者:iamarnold

我想安排一个每周五上午11:30的活动,但有几件事我不确定。我目前每天上午11:30安排一个活动,代码如下:

function my_schedule() {

    $hour = 11;
    $minute = 30;
    $dayofweek = \'today\';
    $frequency = \'daily\';

    if ( !wp_next_scheduled( \'my_event\' ) ) {
        $scheduleTime = strtotime($dayofweek." $hour:$minute am America/Montreal");
        wp_schedule_event($scheduleTime, $frequency, \'my_event\' );
    } 
}
我的问题是,如果我改变$dayofweekfriday, 我需要换衣服吗$frequencyweekly 自从$scheduleTime 总是在星期五吗?做$frequency 如果我有$scheduleTime 设定为每周的星期五?确切地说$frequency 影响$scheduleTime 对于wp_schedule_event()?

1 个回复
SO网友:Jen

根据docs 对于此功能,默认情况下不能设置每周事件。

wp_schedule_event(int $timestamp, string $recurrence, string $hook, $args = array() );
The$recurrence 值需要是以下值之一:

您需要在回调函数中测试今天的日期,my_event. 类似于:

function my_event() {
  # date(\'l\') returns the formatted full day of the week 
  if ( date (\'l\') !== \'Friday\' ) {
    return;
  }
  # do my_event things!
}
编辑:如果要添加每周cron计划,可以通过在cron_schedules 过滤器挂钩。你可以看到一个例子here, 结果会是这样的:

function 246184_weekly_cron_schedule( $schedules ) {
    $schedules[ \'weekly\' ] = array( 
        \'interval\' => 60 * 60 * 24 * 7, # 604,800, seconds in a week
        \'display\' => __( \'Weekly\' ) );
    return $schedules;
}
add_filter( \'cron_schedules\', \'246184_weekly_cron_schedule\' );