説明
wp_schedule_event() は、決まった間隔で繰り返し実行する処理(WP-Cron)を登録する関数です。
基本構文
wp_schedule_event( int $timestamp, string $recurrence, string $hook, array $args = array(), bool $wp_error = false ): bool|WP_Error
引数
$timestamp:最初に実行する時刻(UNIXタイムスタンプ)$recurrence:間隔(hourly/twicedaily/dailyなど)$hook:実行するフック名$args:フックに渡す引数$wp_error:失敗時にWP_Errorを返すか
戻り値
登録できたら true。
使い方(サンプル)
if ( ! wp_next_scheduled( 'my_daily_event' ) ) {
wp_schedule_event( time(), 'daily', 'my_daily_event' );
}
add_action( 'my_daily_event', 'my_daily_task' );
注意点
- 登録前に
wp_next_scheduled()で重複登録を防ぎます。 - WP-Cronは、サイトへのアクセスがあったときに実行されます。アクセスが少ないサイトでは、サーバーのcronから
wp-cron.phpを呼ぶ設定にします。 - プラグインの無効化時に
wp_clear_scheduled_hook()で解除します。
実務での使いどころ
- 毎時・毎日など、定期的な処理(集計、掃除、同期)を、登録するとき。
- プラグインの有効化時に、定期実行を、設定するとき。
よくあるミスと対処
- 毎回のリクエストで、登録している。登録済みかを、
wp_next_scheduled()で確認してから、登録する。 - 登録しただけで、実行する処理を、
add_action()で用意していない。 - 無効化のときに、登録を解除していない。
wp_clear_scheduled_hook()で解除する。 - WP-Cronは、サイトにアクセスがあったときに、動く。正確な時刻の実行は、保証されない。
NG例
add_action( 'init', function () {
wp_schedule_event( time(), 'daily', 'my_daily_task' ); // 毎回登録される
} );
OK例
add_action( 'my_daily_task', 'my_daily_callback' );
register_activation_hook( __FILE__, function () {
if ( ! wp_next_scheduled( 'my_daily_task' ) ) {
wp_schedule_event( time(), 'daily', 'my_daily_task' );
}
} );
register_deactivation_hook( __FILE__, function () {
wp_clear_scheduled_hook( 'my_daily_task' );
} );
使い分け早見表
| 関数 | 役割 |
|---|---|
wp_schedule_event() |
定期的に実行する処理を、登録する |
wp_schedule_single_event() |
1回だけ実行する処理を、登録する |
wp_clear_scheduled_hook() |
登録した処理を、解除する |
関連項目
wp_next_scheduled()、wp_clear_scheduled_hook()、wp_schedule_single_event()、wp_get_schedules()
公式リファレンス:wp_schedule_event() | Function | WordPress Developer Resources

コメント