2014年1月13日月曜日

WordPress で定期的に処理を実行

サーバで定期的に処理を実行する場合は cron がよく使用されます。WordPress のプラグインから cron と同じように定期的に処理を行なう機能があり。wp-cron です。

wp-cron はサイトへ HTTP アクセスがあった時に、指定された時刻を過ぎていれば処理を実行するため、実際には定期的に処理が行われているわけではありません。しかし、crontab コマンドが使用せずにプラグインから登録できるため便利です。

プラグインを有効化した際に wp_schedule_event() でタスクを登録し、プラグインを無効化した際に wp_clear_scheduled_hook() でタスクを削除します。タスクを削除しないと重複していくつもタスクが登録されてしまうので注意が必要です。

例えば 1 日 1 回アクセスログの更新をするような処理の場合、以下のようになります。
// 1日1回、閲覧数の更新をする
register_activation_hook(__FILE__, 'update_access_activation');
function update_access_activation() {
 wp_schedule_event(time(), 'daily', 'update_access_log');
}
add_action('update_access_log', 'cm_update_access_log');

register_deactivation_hook(__FILE__, 'update_access_deactivation');
function update_access_deactivation() {
 wp_clear_scheduled_hook('cm_update_access_log');
}

詳細はこちらから
Function Reference/wp_schedule_event - WordPress.org
http://codex.wordpress.org/Function_Reference/wp_schedule_event

0 件のコメント:

コメントを投稿