WordPressのカスタマイズやテーマファイル、プラグインの作り方などデータベース構造から詳しく解説します。

【WordPress】Cronを使わず疑似Cronを作成

WordPressで定期的に自動更新を行ってくれるCronが必要になりました。
どうやらWordPressで簡単に作成する方法の一つとして疑似Cronを作成するのが良いみたいなので、今回はその方法を書きます。

wp_schedule_event

WordPressにはあらかじめwp_schedule_eventという関数が用意されています。

指定された一定の期間をおいてWordPressのコアファイルによって実行されるアクションを登録します。アクションは誰かがサイトを訪れたときに、予定されていた時間をすぎていた場合、実行されます。

使い方

<?php
// イベントの作成
add_action('my_hourly_event', 'my_hourly_action');
function my_hourly_action() {
	// 実行したいイベントの処理
}

// イベント時間の設定を追加
// イベント登録時に使えるようにする。wp_schedule_event(time(), '10sec', 'my_hourly_event')
add_filter('cron_schedules', 'my_interval' ); 
function my_interval($schedules) {
	// 10秒毎を追加
	$schedules['10sec'] = array(
		'interval' => 10,
		'display' => 'every 10 seconds'
	);
	return $schedules;
}

// イベントの登録
add_action('wp', 'my_activation');
function my_activation() {
	// イベントが未登録なら登録する
	if(!wp_next_scheduled('my_hourly_event' ) ) {
		wp_schedule_event(time(), '10sec', 'my_hourly_event')
	}
}

// プラグイン停止でイベントを解除
register_deactivation_hook(__FILE__, 'my_deactivation');
function my_deactivation() {
	wp_clear_scheduled_hook('my_hourly_event');
}

これで完成です!

関連記事

ページ上部へ戻る