WordPressでは、WordPress上のジョブを定期実行するために「wp-cron」と呼ばれる⽅法が利⽤されています。
wp-cronでは、Webアクセスをトリガーにして、実⾏すべきジョブがないかどうかを確認しています。(具体的には、⾃サーバーからwp-cron.phpをHTTP/HTTPS経由で実⾏します)
しかし、Webアクセスをトリガーにしていると、アクセスの少ないサイトなどではなかなかwp-cronが実行されないケースがあります。
そこで、Linux環境でWordPressを実行しているなら、ジョブの定期実行をwp-cronからOS(オペレーティングシステム)のcronに変更することで、リアルタイムに処理することできるようになります。
ここでは、ジョブの定期実行をwp-cronからcronに変更する方法をご紹介します。
手順
wp-cronを無効にする
WordPressの設定ファイル(wp-config.php)に以下を追記します。
追記する箇所は、「編集が必要なのはここまでです ! WordPress でブログをお楽しみください。」というコメント行の直上に追記しました。
define('DISABLE_WP_CRON', 'true');
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
cronの設定
つぎのOSのcronでwp-cron.phpを定期的に実⾏するように、/etc/crontabの最終行に以下を追記します。
* * * * * nginx /usr/bin/php -q /var/www/html/wp-cron.php >/dev/null
「nginx」の部分は、Webサーバーを実行しているユーザーを指定してください。Webサーバーがnginxなら「nginx」、Apacheなら「apache」などのユーザー名を指定します。
「/usr/bin/php」の部分は、PHPコマンドのパスを指定してください。通常はこのままで問題ないと思います。
「/var/www/html/wp-cron.php」の部分は、WordPressをインストールしたディレクトリのwp-cron.phpファイルのフルパスを指定してください。
以上で完了です。
あとがき
ジョブの実行状況を確認するときは、WordPressプラグイン「WP Crontrol」で確認するとよくわかります。