レッスン予約システムについてのメモです。
講師のスケジュール情報を定期的に削除するために、wp_schedule_event() を使います。wp_schedule_event() で登録されたアクションは、誰かがサイトを訪れたときに、予定されていた時間を過ぎていれば実行される、という仕組みです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// イベントの作成 add_action('my_hourly_event', 'my_hourly_action'); function my_hourly_action() { // スケジュール情報の削除処理 } // イベントの登録 add_action('wp', 'my_activation'); function my_activation() { // イベントが未登録なら登録する if(!wp_next_scheduled('my_hourly_event' ) ) { wp_schedule_event(time(), 'hourly', 'my_hourly_event') } } // プラグイン停止でイベントを解除 register_deactivation_hook(__FILE__, 'my_deactivation'); function my_deactivation() { wp_clear_scheduled_hook('my_hourly_event'); } |
ベーシック認証(アクセス制限)は無効にします。
ベーシック認証が有効になっていると cron処理が実行されません。
イベント登録状況の確認
イベントの登録状況を確認するために、Cron View というプラグインを使用しました。
イベントの実行間隔は、"hourly", "twicedaily", "daily" のいずれかを指定しますが、より短い実行間隔を追加して、イベントが正しく実行されているか確認しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// イベントの実行間隔を追加 add_filter('cron_schedules', 'my_interval' ); function my_interval($schedules) { // 10秒毎を追加 $schedules['10sec'] = array( 'interval' => 10, 'display' => 'every 10 seconds' ); return $schedules; } // イベント登録時の指定 wp_schedule_event(time(), '10sec', 'my_hourly_event') |
参考にした記事
コメントを残す