私は毎週金曜日の午前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' );
}
}
私の質問は、私が$dayofweek
をfriday
に変更した場合、$frequency
は常に金曜日になるので$scheduleTime
をweekly
に変更する必要がありますか? $frequency
が毎週金曜日に設定されている場合、$scheduleTime
はもう違いますか? wp_schedule_event()
の場合、$frequency
は$scheduleTime
にどの程度影響を与えますか?
この機能の docs によると、デフォルトで毎週のイベントを設定することはできません。
wp_schedule_event(int $timestamp, string $recurrence, string $hook, $args = array() );
$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!
}
add 毎週のcronスケジュールにしたい場合は、 cron_schedules filterフックにフィルタを追加することで可能です。あなたはその例を見ることができます ここ 、それはこのような何かにうまくいくでしょう:
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' );