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のカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。