WordPress の疑似cronの実行時間を調整する

WordPress で定期的な処理を行うには、wp_schedule_event という関数を用いることで実現可能です。使い方は、リンク先を見ていただくとして、定期実行させる時間を調整する方法(といっても単なる引数の設定の仕方)を紹介しておきます。

プラグインの有効化した時間に関わらず、午前1時に定期処理させたい場合は、

wp_schedule_event( ceil( time() / 86400 ) * 86400 + ( 1 - get_option( 'gmt_offset' ) ) * 3600, 'daily', 'my_daily_event' );

こんな感じ。午前1時ではなくて、もっと遅い時間などに実行させたい場合は、get_option の前の1を、その時刻で設定すれば大丈夫なはずです。

ceil( time() / 86400 ) * 86400

で、世界標準時での翌日午前0時のタイムスタンプが取れるので(※ WordPress は、内部処理を世界標準時の変更しているため、time関数などの返値がGMTとなります。)、これに時差の差分と、午前1時に実行させるための1時間分を加味させるために

( 1 - get_option( 'gmt_offset' ) ) * 3600

を足しています。