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









