最初にカスタム間隔を作成します。これに関する詳細については、こちらをご覧ください。
add_filter( 'cron_schedules', 'cron_add_5min' );
function cron_add_5min( $schedules ) {
$schedules['5min'] = array(
'interval' => 5*60,
'display' => __( 'Once every five minutes' )
);
return $schedules;
}
プラグインによって登録されたイベントのスケジュールを解除したことを確認してください。
wp_unschedule_event( next_scheduled_event( 'w4pr_cron' ), 'w4pr_cron' );
次に、この再発間隔でイベントを午前5時に開始するようにスケジュールします。
if( time() > strtotime( 'today 5:00' ) )
wp_schedule_event( strtotime( 'tomorrow 5:00' ), '5min', 'w4pr_cron' );
else
wp_schedule_event( strtotime( 'today 5:00' ), '5min', 'w4pr_cron' );
w4pr_cronは関数ではなく、関数がアタッチされたフックです。したがって、タイムスタンプが指定された時間間隔内にない場合、このフックが呼び出されても何も起こらないようにする必要があります。したがって、functions.phpまたはページが読み込まれるたびに実行される場所に、次のように入力します。
add_action( 'init', function() {
$start = strtotime( 'today 5:00' );
$end = strtotime( 'today 6:30' );
if( !(time() > $start && time() < $end) ) remove_all_actions( 'w4pr_cron' );
}