【WordPressの予約投稿が公開されない】Cronを設定する前の確認3つのこと
この記事の結論
WordPressの予約投稿が予定時刻を過ぎても公開されないとき、最初からサーバーのCron設定を変える必要はありません。投稿の日時とタイムゾーン、管理画面のサイトヘルス、WP-Cronが動くきっかけを順に確認します。WordPressでは予約投稿を含む一部の処理にWP-Cronが使われますが、通常のWP-Cronはページへのアクセスをきっかけに実行されるため、アクセスが少ない時間帯は予定時刻どおりに動かないことがあります。
WordPressの予約投稿が予定時刻を過ぎても公開されないとき、最初からサーバーのCron設定を変える必要はありません。投稿の日時とタイムゾーン、管理画面のサイトヘルス、WP-Cronが動くきっかけを順に確認します。WordPressでは予約投稿を含む一部の処理にWP-Cronが使われますが、通常のWP-Cronはページへのアクセスをきっかけに実行されるため、アクセスが少ない時間帯は予定時刻どおりに動かないことがあります。
この記事は、記事を予約したのに下書きや「予約投稿の失敗」の状態に残ったサイト管理者向けです。公開されない原因は一つに決められません。プラグイン、サーバー、外部Cronなどを一度に触らず、まず管理画面で確認できるところから切り分けます。
1. 投稿の日時とサイトのタイムゾーンを確認する
予約投稿を開き、公開日時が意図した日時になっているかを確認します。次に、WordPress管理画面の「設定」→「一般」で、タイムゾーンが運用している地域と合っているかを見ます。
予約時刻をあとから変えた場合は、更新ボタンを押して予約状態が保存されたかも確認します。記事一覧で予定日時が表示されていても、下書きのままでは公開されません。公開直前の本文修正、アイキャッチ設定、カテゴリー修正を行ったときは、最後に予約投稿として保存されているかを記事一覧でも確認します。
2. サイトヘルスでWP-Cronに関する警告を確認する
次に、管理画面の「ツール」→「サイトヘルス」を開き、致命的な問題や推奨改善に、ループバック・REST API・スケジュール済みイベントに関する表示がないかを確認します。ここで出た警告があれば、本文の編集画面ではなく、その警告が示す範囲から直します。
WordPress公式のプラグイン開発者向け説明では、更新確認や予約投稿の公開にもWP-Cronが使われること、通常のWP-Cronはサイトへのアクセス時に動くことが説明されています。つまり、予定時刻の直前後にアクセスがまったくないサイトでは、公開処理が次のアクセスまで遅れる可能性があります。
そのため、原因を確認する目的で公開予定時刻のあとにサイトを一度開くことはできます。ただし、これで毎回公開できるからといって、問題が完全に解決したとは判断しません。アクセス依存で動いているだけか、ほかのスケジュール済みイベントにも失敗があるかを分けて考えます。
3. 外部Cronやプラグインは、原因が見えてから追加する
アクセスの少ない時間帯にも決まった時刻に公開したい場合、サーバーのCronからWordPressの処理を起動する方法があります。ただし、外部Cronを追加する前に、既存のWP-Cronを無効化していないか、サーバー側の設定方法が利用中のプランに合うかを確認します。
設定を変える前に残しておきたいのは、次の記録です。
- 予約した日時と、実際に公開されなかった日時
- その時間帯にサイトへアクセスがあったか
- サイトヘルスに出ていた警告
- 予約投稿以外の通知・更新確認にも遅れがあるか
この記録がないままCron設定を増やすと、プラグインの競合、サーバーの制限、投稿日時の設定ミスのどれだったかを後から追えなくなります。サーバーごとにCronの設定画面と実行間隔は異なるため、コマンド例をそのまま貼り付けず、契約中サーバーの公式マニュアルを確認してから設定してください。
契約後に使える機能の範囲や、初期設定の違いはサーバーによって差があります。サーバーを比較検討する場合は、エックスサーバーとさくらのSSH比較を参考にしてください。
まとめ
予約投稿の失敗は、まず投稿日時、タイムゾーン、サイトヘルスの順に見ます。WP-Cronは予約投稿にも使われ、通常はサイトへのアクセスが処理を動かすきっかけになるため、アクセスが少ないサイトでは遅れることがあります。
外部Cronは有効な選択肢になりえますが、最初の対処ではありません。いつ・どの投稿で・どんな警告が出たかを残してから設定を変えると、同じ失敗を繰り返しにくくなります。