wp-cron.php を cron で実行する

こっちの記事で wp-cron.php が正しく動作しなくなるから Basic 認証を諦めたと書いた。
でも、wp-cron.php をシステムの cron で実行すれば、全くページロードがなくてもスケジュールされたタスクを実行できる。

・・・これまで気にしてなかったけど一般的な設定みたい。

ググれば色々でてくるが、自分の環境では apache の実行ユーザーは www-data だけど、FastCGI で php をユーザーモードで動作させているから crontab の書き方に注意する。

WordPress のルートディレクトリの wp-config.php に次の1行追加して wp-cron.php を無効化する。ファイルの冒頭 <?php の次の行とか、定数だから最初のほうに書き込めばいい。

define('DISABLE_WP_CRON', 'true');

続いて、自分の環境だとターミナルから hoge でログインして $ crontab -e として次の行を追加する。
例は 10分間隔で wp-cron.php を実行する場合。

*/10 * * * * /usr/bin/php /home/hoge/public_html/example.com/wp-cron.php >/dev/null 2>&1

もしくは $ sudo vi /etc/crontab で wp-corn.php を定期的に実行させる設定を追加する。
ユーザー hoge で php を動作させていている場合は、

*/10 * * * * hoge /usr/bin/php /home/hoge/public_html/example.com/wp-cron.php >/dev/null 2>&1

これで Basic 認証ありでも wp-cron.php は確実に実行されることになる。
回り道したけれど、再びテストサイトに Basic 認証を設定して「工事中」プラグインは削除しよう。

Basic 認証を設定している場合、サイトヘルスの致命的な問題「サイトの HTTPS 接続に問題があります。」は諦めるしかないな。

コメント

コメントする

目次
閉じる