web-dev-qa-db-de.com

So korrigierst du meinen Termin wöchentlich mit wp_schedule_event ()

Ich möchte einen Termin vereinbaren, der jeden Freitag um 11.30 Uhr stattfindet, und ich bin mir bei einigen Dingen nicht sicher. Ich plane derzeit eine Veranstaltung täglich um 11:30 Uhr mit folgendem Code:

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' );
    } 
}

Meine Frage ist, wenn ich $dayofweek in friday ändere, muss ich $frequency in weekly ändern, da $scheduleTime immer freitags sein würde? Macht $frequency keinen Unterschied mehr, wenn ich $scheduleTime habe, der auf Freitag jeder Woche eingestellt ist? Wie genau wirkt sich $frequency auf $scheduleTime für wp_schedule_event() aus?

3
iamarnold

Laut docs für diese Funktion können Sie standardmäßig kein wöchentliches Ereignis einrichten.

wp_schedule_event(int $timestamp, string $recurrence, string $hook, $args = array() );

Der Wert $recurrence muss einer der folgenden Werte sein:

  • "stündlich"
  • "zweimal täglich"
  • "Täglich"

Sie müssen das heutige Datum in Ihrer Rückruffunktion my_event testen. So etwas wie:

function my_event() {
  # date('l') returns the formatted full day of the week 
  if ( date ('l') !== 'Friday' ) {
    return;
  }
  # do my_event things!
}

Bearbeiten:

Wenn Sie einen wöchentlichen Cron-Zeitplan hinzufügen möchten, können Sie dies tun, indem Sie dem Hook cron_schedules filter einen Filter hinzufügen. Sie können ein Beispiel dafür sehen hier , es würde ungefähr so ​​aussehen:

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' );
3
guiniveretoo