こんにちは。スタッフのユースケです。
WordPressで定期的にバッチ処理を行いたいなんてことありませんか?
例えば、外部サイトから定期的にデータを取得してコンテンツを更新したり、イベント開催の1週間前にリマインドメールを配信したり。
そんなとき、定期的に処理を実行してくれる仕組みがWordPressにはあります。
「wp_cron」です。
ただし、この「wp_cron」は擬似的なcronで、指定した時間に必ず実行されるものではありません。
「wp_cron」の仕組みは下記のようになっています。
よって、処理がスケジューリングされていても、サイトにアクセスがなければ実行はされませんし、アクセスのあった時間が基準となるため、確実に指定時間に実行されるわけではありません。
(※もし、指定時間に確実に実行したいのであれば、サーバー側のcron を使用すれば可能です。
ただし、レンタルサーバーでは使用できないこともあります。)
それでは、実際に定期実行する処理を登録してみましょう。
テストメールを送信する処理をサンプルとして登録してみます。
// メール送信処理 function sample_remind_mail() { wp_mail( ’xxx@xxx.jp’, 'テストタイトル', 'テストメッセージ' ); } add_action ( 'sample_add_cron', 'sample_remind_mail' ); // cron登録処理 if ( !wp_next_scheduled( 'sample_add_cron' ) ) { wp_schedule_event( time(), 'daily', 'sample_add_cron' ); }
上から順番に説明しますと、まずメール送信を行う処理を「sample_add_cron」というwp_schedule_eventでスケジューラーに登録しています。
「wp_next_scheduled」は、スケジューラーにイベントが登録されているか確認するものです。
「wp_schedule_event」の引数はそれぞれ下記の通りです。
実行間隔は、「hourly」(毎時)、「twicedaily」(日に2回)、「daily」(毎日)があります。
これで、テストメールを送信する処理が毎日実行されます!
あとは、フックしている関数をカスタマイズして、定期実行したい処理に変えてみてくださいませ。
以上で定期実行処理の登録は完了ですが、プラスアルファでWordPressのCronに関する便利なプラグインを紹介します!
「WP Crontrol」
これはスケジューラーに登録されているイベントの確認・編集・削除・実行ができるプラグインです!
公式ディレクトリに掲載されているプラグインですので、通常どおりインストールできます。
インストールすると、「ツール」に「Crontrol」というメニューが追加されます。
ここをクリックすると、現在登録されているイベントを確認できます。
このように、プラグインやテーマの更新チェックなど、デフォルトでいくつかのイベントが登録されていますね。
先ほどの登録処理を実行すると、ここにイベントが追加されます。
各イベントの右側にあるリンクで編集・削除・実行ができます。
「Run Now」:イベントの即時実行
これを利用すると登録したイベントの動作確認ができるので、便利ですね!
「Delete」:イベントの削除
WordPressのデフォルトで登録されているものを消さないように注意してください!
「Edit」:登録内容の変更
「Hook name」と「Arguments」は処理が正しく動かなくなる可能性もあるので、変更する際は注意してください。
「Next run」で次回実行される時間を変更できます。
「Event Schedule」で実行サイクルを変更できます。
如何でしたか?「wp_cron」
週1・月1でやっていたサイト更新作業などなど、めんどくさいルーチンワークをcron登録して、メンテナンスコストの軽減にトライしてみてください!
7Fを運営している株式会社コミュニティコムでプログラマーをしています。担当はWeb制作ですが、受付にもフワッと座ってます。呼称は「ゆーすけ」なので気軽に呼んでください。7F受付にあるチェックインシステムを作った人だったりします。好きなものはお酒です。でも痛風なのでビールは与えないでください!だんだん年齢に抗えなくなってきたので、イイ感じにできる運動があれば紹介してください。
2012-2023 © コワーキングスペース7F All Rights Reserved.
運営会社 株式会社コミュニティコム