wordpressでバッチを動かす方法
wp cron
定期的にバッチ処理などを実行したい場合は通常cronを使用しますが、通常cronの設定が難しいケース(レンタルサーバーなど)のため、wordpressが疑似cronの方法を提供しています。それは wp cronと言います。
設定(例えば1日1回)に応じて、サイトにアクセスが来たとき(通常は初回目)に、バッチ処理を実行します。
もちろん、サイトにアクセスが来ないと、wp cronの実行ができません。
wp cronは通常プラグインベースで、まず実行したい処理を書きます。
1 2 3 4 5 6 7 8 | add_action("hoge_cron_membership", "hoge_cron_expire_memberships"); function hoge_cron_expire_memberships() { global $wpdb; // やりたい処理(ここは、メンバーシップ期限切れの処理) // ... } |
その処理を、プラグインの有効・無効化とともに、バッチスケジュールの設定・解除をします。
1 2 3 4 5 6 7 8 9 10 11 12 | function hoge_activation() { //schedule crons wp_schedule_event(time(), 'daily', 'hoge_cron_membership'); } function hoge_deactivation() { //remove crons wp_clear_scheduled_hook('hoge_cron_membership'); } register_activation_hook(__FILE__, 'hoge_activation'); register_deactivation_hook(__FILE__, 'hoge_deactivation'); |
crontab(wp ajax)
通常cronが利用できる場合のwordpressでのバッチの設定方法を見てみましょう。
最初にwp ajaxを利用するケースです。
まずは、上記で作った関数(hoge_cron_expire_memberships)をwp_ajax_noprivのactionに追加します。
1 | add_action("wp_ajax_nopriv_cron_membership", "hoge_cron_expire_memberships"); |
それを1日1回(例では毎日0時0分)に実行できるように、crontabに設定します。
1 | 0 0 * * * /usr/bin/curl http://yourdomain.com/wp-admin/admin-ajax.php?action=cron_membership |
crontab(その他)
任意スクリプトを作って、通常cronに設定することもできます。
例では、hoge_cron.phpというスクリプトを作ります。
中身は下記のようになります。
1 2 3 4 | define('WP_USE_THEMES', false); require('/path/to/wp-load.php'); hoge_cron_expire_memberships(); |
crontabの設定は下記のようになります。
1 | 0 0 * * * /usr/bin/php /path/to/hoge_cron.php |
Author Profile
スターフィールド編集部
SHARE