WordPressの予約投稿が動かない? 自宅NASで起きたWP Cronエラーと解決までの記録
はじめに ─ ある日突然、管理画面にエラーが出た
自宅のSynology NASでWordPressを運用していると、ある日WordPress管理画面を開いたときに見慣れないエラー表示が出ていました。
画面には「Past-due」という表示とともに、見慣れない英語のアクション名が並んでいました。特に何か操作をした覚えもないのに、なぜこのようなエラーが出るのか、最初はまったく原因がわかりませんでした。
今回はこのエラーの原因を調べていくうちに、予約投稿が動いていなかった問題の原因まで同時に判明した経緯をご紹介します。
エラーの内容 ─ Past-dueとは何か
表示されていたエラーは以下のものでした。
これはWordPressのプラグイン管理機能「Action Scheduler」が処理すべきタスクを抱えたまま、実行されずに期限切れ(Past-due)になっている状態を示していました。
管理画面の「ツール」→「スケジュールされたアクション」→「Past-due」タブを開くと、このアクションが1件溜まっているのが確認できました。
WP Cronとは何か?
このエラーを理解するために、まず「WP Cron」という仕組みを知っておく必要がありました。
WP Cronとは、WordPressに組み込まれている「定期処理の仕組み」のことです。具体的には以下のような処理を自動で行っています。
- 予約投稿の自動公開
- プラグインの自動更新チェック
- Action Schedulerのキュー処理
- UpdraftPlusなどバックアッププラグインの定期実行
要するに、WordPressが「時間になったら自動でやっておく」と約束している処理は、すべてWP Cronが動いていることが前提になっていました。
なぜ自宅NASで問題が起きやすいのか
実はWP Cronには、一般的なレンタルサーバーとは異なる重大な特性がありました。
| レンタルサーバー | 自宅NAS(私の環境) | |
|---|---|---|
| Cronの仕組み | サーバー側のLinux Cronが定期実行 | 誰かがページを開いたときだけ動く |
| 安定性 | 安定して毎分動く | アクセスがないと動かない |
WordPressのWP Cronは、本来「誰かがサイトにアクセスしたタイミング」でこっそり裏側で処理を走らせる仕組みです。
自宅NASで運営している個人ブログはアクセス数が多くないため、何日もアクセスがない期間が続くと処理が溜まり続け、Past-dueエラーとして表面化することがわかりました。
予約投稿が公開されなかった原因もこれだった
このWP Cronの仕組みを理解したとき、「そういえば予約投稿が公開されていなかったことがあった」という記憶が蘇りました。
予約投稿の公開もWP Cronが担っています。つまり、WP Cronが動いていなければ、指定した時刻になっても記事は「予約中」のまま公開されません。
- 予約した記事が時刻になっても公開されない
- Action Schedulerのアクションが溜まりPast-dueエラーになる
- バックアッププラグインが予定通り動かない
- プラグインの更新通知が遅れる
自宅NASブログで「予約投稿がなぜか反映されない」という経験がある方は、WP Cronが正しく動いていない可能性が高いです。
一時的な解決策 ─ 手動実行する手順
まず溜まっているPast-dueアクションを手動で実行して、エラーを消す作業を行いました。
- WordPress管理画面にログイン
- 「ツール」→「スケジュールされたアクション」を開く
- 「Past-due」タブをクリック
- 一覧に表示されたアクションにカーソルを合わせる
- 表示された「実行」をクリック
- Past-dueタブが空になればOK
実行後、Past-dueタブには「項目は見つかりませんでした。」と表示され、エラーは消えました。ただしこれはあくまでその場しのぎの対処であり、根本的な原因は解決していませんでした。
根本的な解決策 ─ cron-job.orgの設定
根本的な解決のために、外部サービス「cron-job.org」を使ってWordPressのCronエンドポイントを定期的に叩く設定を行いました。
cron-job.orgは無料で使えるCron実行サービスで、指定したURLを決まった間隔で自動アクセスしてくれます。
- URL:https://www.***
- 実行間隔:15分おき
- タイムゾーン:Asia/Tokyo
この設定により、誰もブログにアクセスしていない時間帯でも、15分ごとにWP Cronが確実にトリガーされるようになりました。予約投稿の公開遅れや、Action Schedulerのエラーが再発しない環境が整いました。
設定結果の確認
設定後、最初の実行タイミングを待ってcron-job.orgの実行履歴を確認しました。
- ステータス:Successful / 200 OK
- 処理時間:約1.95秒
- 以降15分おきに自動実行を継続
緑のチェックマークとともに「200 OK」が返ってきており、WP-Cronが正常にトリガーされていることが確認できました。
おわりに
今回の件で改めて実感したのは、自宅NASでのWordPress運用はレンタルサーバーとは異なる落とし穴があるということでした。
レンタルサーバーであれば当たり前に動いているWP Cronも、アクセス数の少ない自宅NASブログでは自力では動けない状況になっていました。
「予約投稿が動かない」「管理画面にエラーが出る」といった症状が出たときは、まずWP Cronの動作確認を疑ってみるのが近道だと思います。cron-job.orgの設定は無料でできますので、同じ環境で運用している方はぜひ試してみてください。

コメント