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スケジュールを登録する方法を紹介させていただきました。

つくりばのことが気になりましたか?

つくりばは、ココトモ・未来地図を自社で10年以上運営してきた知見をもとに、相談・コミュニティの開発と運営を支援しています。いきなりのご相談でなくて大丈夫です。まずは私たちの実績や考え方をご覧ください。

つくりばについて知る

← WordPressの一覧へ戻る

Webサービスの課題を、まずは無料相談で整理しませんか。

既存サービスの改善、新規立ち上げ、運用サポート、予算内での優先順位づけなど、今の状況に合わせてじっくりお話を伺います。まだ形になっていない段階のご相談も大丈夫です。

  • videocamオンライン対応
  • forum課題整理だけでも歓迎
  • payments概算費用の目安がわかる
無料相談を申し込む