WordPressでバッチ処理ができることをご存知でしょうか?
バッチ処理とは、日本語に直すと一括処理です。決められた時間に一気に処理することをバッチ処理といいます。
WordPressでバッチ処理することもできます。WordPressにはもともとそういった処理を想定して、関数が用意されています。
WordPressでバッチ処理するときは、WP-Cronという関数を使うことで動かすことができます。WordPressのプラグインでもこの処理を使っているものは多いです。
で、私が作っている別サイトでこれを使おうとしましたが、うまく動かすことが出来ませんでした。原因を調べたのですが、私の理解力不足で解決できずじまいです。結果的に他の方法で解決しました。
追記:うまく動かないというのは、時間通りに動かないというので、全く動かなかったという訳ではありません。
それが今回紹介する方法です。私はレンタルサーバーのエックスサーバーを使っていて、それに標準で備わっているcronという機能を使うことで、バッチ処理を実現できました。
このページの目次
エックスサーバーのcronを動かすコマンド
今回はエックスサーバーを例にして紹介しますが、cronという機能はたいていのレンタルサーバーに備わっている機能なので、どこのレンタルサーバーであっても利用可能だと思います。
前置きはこれぐらいにして、手順を紹介していきます。
まず、エックスサーバーの管理画面にログインします。ログインしたら、左側にCron設定というリンクがあるので、それをクリックします。
Cron設定画面が出てきましたね。
この画面では、既に設定しているCronの一覧が表示されています。はい、勘のいい方はもうお分かりですね。コマンドが表示されています。
バッチ処理を動かすコマンドは、以下のように書きます。
wget -q "動かしたいファイルのURL"
バッチ処理を動かすには、Cronを設定しないといけないので、上の画像にある「CRONの追加」をクリックします。
例えば、毎日午前2時に処理を動かしたい場合は上のように書きます。コマンドは先ほどの、wgetで始まるのを入力します。
これで追加が完了すれば、指定した時間に処理を動かすことができます。
WordPress側でバッチ処理を書く
バッチ処理の設定は上のようにするとOKです。しかし、肝心の動かすプログラムがないといけませんよね。これをPHPでゴリゴリ書いていくのは当然必要ですが、それをする前に必要なことがあります。
バッチ処理はWordPressの固定ページで作ります。固定ページといっても、別のテンプレートを作る必要があります。固定ページのテンプレートを作成するには、PHPファイルの先頭に以下のコードを書きます。
<?php /** * Template Name: テンプレートの名前 */ ?>
これでテンプレート化できます。その下に実際動かすプログラムコードを書きます。コードが完成したら、サーバにファイルをアップロードします。このファイルは自分が使っているWordPressテーマファイルのフォルダ内です。
「〜/wp-content/themes/自分が使っているテーマフォルダ」 ← ここにファイルを置きます。
次にWordPressの管理画面から固定ページを作成します。その時、右端に「ページ属性」というのがあるので、ここのテンプレートで自分が作ったテンプレート名を選択します。
これだけでOKです。文章は何も書かなくて問題ありません。あとはパーマリンクをしっかり設定しておきましょう。まだ公開ボタンは押さないでくださいね。最後に大事な設定があります。
※ おまけ
バッチ処理に書く内容で参考になるかもしれない記事
・プログラムでWordPressの投稿とカスタムフィールドを合わせて追加する方法
・WordPressのカスタムフィールドをプログラムで更新する方法
noindex、nofollowにする
最後にするのは、超重要なことです。このバッチ処理が検索エンジンに認識されないようにします。要はmetaタグにnoindex、nofollowを入れる必要があるということです。
この設定は、普通の状態では簡単にできないので、投稿や固定ページ1つ1つに検索エンジンにインデックスさせるかどうかを設定できるプラグインを入れます。
そのプラグインはWordPress SEOというやつです。これが超がつくほど高機能で、個人的に欠かせないプラグインとなっています。このプラグインを入れると、固定ページの投稿画面にこんなのが出てきます。
ここで、noindexとnofollowにチェックを入れておきましょう。これで、検索エンジンに認識されることなく動かすことができます。あと、サイトマップに含まないという設定もできますので、忘れずにしておきましょう。
これだけやれば、バッチ処理できる
私はここに紹介した方法で、実際にWordPressでバッチ処理を動かしています。動かしているサイトは、力を入れて運営している「株主優待データベース」です。
何のためにバッチ処理を動かしているのかはあえて触れないでおきます。1つだけではなく、複数のバッチを動かしています。複数動かすときもここで紹介したやり方をバッチの数だけやってやれば、動きます。
私自身のWordPress理解度がそれほど深くはないので、この方法が最善であるのかどうかは分かりません。ただ、WP-Cronにこだわりすぎて、どうにもならないという方にとっては別の方法があるということを知っていただければ、と思っています。