WordPressでスケジュールに合わせてメール送信機能を作るにはwp-cron機能を利用しますが、WordPress自身では定時動作ができないため外部からのアクセスが必要になります。
そこで、サクラインターネットのレンタルサーバー上でcrontabを利用して正確な時間で動作するようにするための設定方法を、備忘録として残します。
環境はスタンダード契約、WordPress4.1、PHP5.3 です。
設定は実行日時と実行コマンドを設定すれば良いだけの話なのですが、PHPを実行するコマンドの設定に注意する必要がある。
設定例は次の通り。
/usr/local/bin/php /home/USER_DIRECTORY/FILE_NAME 1> /dev/null
環境変数を設定できるようだが、コマンドを絶対パスで指定すればそれで動作する。出力は「1> /dev/null」でnullデバイスへ。また、「cd /home/USER_DIRECTORY; 」としてコマンドを1行に続けて入力するのもOK。
wp-cronとtabcronで検索すると多くの記事が見つかるが、crontabを利用して「wp-cron.php」を呼び出す場合はwp-config.phpで「WP_DISABLE_CRON」を「true」に定義する必要があるようだ。理由は確認していないが、サーバー上のコマンド実行とインターネットからのアクセスが被ると不具合があるのではないかと思う。
なお忘れてはならない大事なことは、「wp_schedule_event」または「wp_schedule_single_event」で忘れずにcron動作するようにスケジューリングしておくこと。
ということでサーバーのコントロールパネル上で指定する実行コマンドは次のようになる。
/user/local/bin/php /home/USER_DIRECTORY/wp-cron.php 1> /dev/null