wp_cron()


WordPressのwp_cron()関数は、指定された時間にタスクを実行するためのスケジューリングシステムです。この関数は、プラグインやテーマで定期的なタスクを実行するために使用されます。

構文

wp_schedule_event( int $timestamp, string $recurrence, string $hook, array $args = array() );

引数の説明:

  • $timestamp(int) — タスクを実行する最初のタイムスタンプ。
  • $recurrence(string) — タスクの繰り返し間隔。’hourly’, ‘twicedaily’, ‘daily’などの値を指定できます。
  • $hook(string) — タスクが実行される際に呼び出されるフック名。
  • $args(array) — フックに渡される引数の配列。

例1: 毎日のタスクをスケジュールする

この例では、毎日特定の時間にタスクを実行するようにスケジュールします。

if (!wp_next_scheduled('my_daily_task')) { wp_schedule_event(time(), 'daily', 'my_daily_task'); }

例2: カスタムフックを使用してタスクを実行する

カスタムフックを使用して、特定のタスクを実行します。

add_action('my_custom_hook', 'my_custom_function'); function my_custom_function() { // タスクの処理 }

例3: タスクのスケジュールを解除する

スケジュールされたタスクを解除する方法です。

$timestamp = wp_next_scheduled('my_daily_task'); wp_unschedule_event($timestamp, 'my_daily_task');

例4: 特定の間隔でタスクを実行する

カスタムの繰り返し間隔を設定してタスクを実行します。

add_filter('cron_schedules', 'add_custom_cron_interval'); function add_custom_cron_interval($schedules) { $schedules['every_30_minutes'] = array('interval' => 1800, 'display' => __('Every 30 Minutes')); return $schedules; }

例5: タスクの実行時間を変更する

既存のタスクの実行時間を変更します。

wp_clear_scheduled_hook('my_daily_task'); wp_schedule_event(time() + 3600, 'daily', 'my_daily_task');

例6: タスクがスケジュールされているか確認する

タスクが既にスケジュールされているかどうかを確認します。

if (wp_next_scheduled('my_daily_task') === false) { // タスクがスケジュールされていない場合の処理 }

例7: タスクの引数を指定する

タスクに引数を渡して実行します。

wp_schedule_event(time(), 'daily', 'my_daily_task', array('arg1', 'arg2'));

例8: タスクの実行ログを記録する

タスクが実行された際にログを記録します。

add_action('my_daily_task', 'log_task_execution'); function log_task_execution() { error_log('タスクが実行されました'); }

注意点

  • wp_cron()は、サイトに訪問者がいない場合には実行されません。
  • 大量のタスクをスケジュールすると、サーバーの負荷が高くなる可能性があります。
  • タスクの実行時間が重ならないように注意してください。

関連機能: