2020.03.20

WordPressで毎週決まった曜日に定期実行させるcronスケジュールを登録する方法

こんにちは、webエンジニアのゾノ( @ozonosho )です。

今日のブログではWordPressで毎週決まった曜日に定期実行させるcronスケジュールを登録する方法を紹介したいと思います。

WordPressでcronを利用して定期的に何かを実行させたい場合はwp_schedule_event関数を使うのが一般的です。

しかし、wp_schedule_event関数はデフォルトでは「hourly(1時間に1回)」「twicedaily(1日に2回)」「daily(1日に1回)」の3つしかイベントスケジュールを持っていないため、今回は「毎週決まった曜日に1回」というイベントスケジュールを作成する方法をお伝えします。

WordPressで毎週決まった曜日に定期実行させるcronスケジュールを登録する方法

今回は例として毎週月曜日に定期実行させるためのcronスケジュールを作成します。実装は簡単で、下記のようなコードをfunctions.phpに記載すればOKです。

function add_original_intervals($schedules) {
  date_default_timezone_set('Asia/Tokyo');
  $dt = new DateTime('now');
  $dt_2 = new DateTime('next week mon'); //①
  $d = $dt_2->diff($dt, true);
  $dt_array = get_object_vars($d);
  $day = $dt_array["d"] * 24 * 60 * 60;
  $hour = $dt_array["h"] * 60 * 60;
  $minutes = $dt_array["i"] * 60;
  $second = $dt_array["s"];
  $difftime = $day + $hour + $minutes + $second;
  $schedules['weekly'] = array(
    'interval' => $difftime, //実行間隔 
    'display' => '毎週月曜日' //表示名称
  );
  return $schedules;
}
add_filter('cron_schedules', 'add_original_intervals');

①の箇所の「mon」を変更すれば開始曜日を変更することができます。
それぞれの曜日は「sun:日」「mon:月」「tue:火」「wed:水」「木:thu」「fri:金」「sat’:土」で指定できます。

作成したスケジュールは、wp_schedule_event関数の引数に渡してあげれば使用できるのでぜひお試しください。

おわりに

以上、今回の記事ではWordPressで毎週決まった曜日に定期実行させるcronスケジュールを登録する方法を紹介させていただきました。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む