今回はWordPressの予約投稿機能が上手く機能せず「予約投稿に失敗」と表示されてしまっている時の対処法を紹介します。
予約投稿機能は非常に便利で日常的に使用する仕組みかと思いますが、この機能が割と癖モノで簡単にバグります。色んな原因が考えられますが、今回はその中で6つ解決法を紹介します。
この解決法の中で、貴方のWordPressでの問題を解決出来れば幸いです。
まずは予約投稿の仕組みを理解しよう
予約投稿の仕組みは、Apache(サーバー)のCronによって動作し、自動で作成した記事を投稿してくれます。
Cron(クローン)とは、あらかじめ設定したスケジュールで制御・実行を行ってくれるコマンドです。
よく使用される例では、2分に一度サーバーに保存されるキャッシュを削除するコマンドです。
このコマンドを使用しているから何時迄もキャッシュが表示されずに、最新の表示がされる訳です。
詳しくはwikiを参照して下さい。
このCronの制御を利用して、未来の日時を指定した記事が予約投稿として機能しています。
しかし、WordPressの自動投稿の仕組みには少し癖があります。
WordPressの自動投稿の場合は、予約投稿していた時間帯に誰かがアクセスすることがトリガーとなり、それに反応して公開されるという仕様だそうです。つまり全くアクセスのないブログでは、予約投稿をしても失敗に終わってしまう場合がある様です。
WordPressで「予約投稿に失敗」とエラーが出た時の対処法
ではWordPressで「予約投稿に失敗」とエラーが出た時にはどうしたら良いのか?具体的な方法をいくつか紹介します。
プラグインを使用する
まずは最も簡単な方法はプラグインをインストールする方法です。
WP Missed Scheduleを使えば、失敗した「予約投稿」に反応して「予約投稿」が完了するまで無限に投稿を繰り返してくれます。つまり、いつか必ず成功します。

しかしプラグインをインストールする事が嫌いな人も一定数いると思います。そんな方は次の方法を試してみて下さい。
代替Cronの設定をする
WordPressではデフォルト設定で専用のCronが動作しています。このCronはOFFにすることで代替Cronが動作する様になります。予約投稿の失敗がCronによるものだとしたら、そのCronをOFFにして代替Cronを使用すれば良いということです。
代替CronをONにする方法は、WordPressのインストールディレクトリ直下にあるwp-config.phpの最下部に下記の一文を追加するだけです。
define('DISABLE_WP_CRON', 'true');

キャッシュ系プラグインを停止させる
WordPressにキャッシュ系プラグインを利用していると予約投稿が上手くいかない事がある様です。
jetpackやWP Super Cacheなどのプラグインを入れてサイトデータのキャッシュを取得している場合、一度停止してみてからもう一度予約投稿をしてみて下さい。うまく動作すればそれが原因になります。
またサーバーでキャッシュを取得している場合も同じような現用が起きます。一度OFFにして試してみて下さい。
ベーシック認証を解除する
ベーシック認証を設定しているとCronは上手く機能しません。ベーシック認証を解除して今一度試してみて下さい。
アクセス数が極端に少ないことが原因
予約投稿の仕組みでも少し触れましたが、アクセスが極端に少ないとCronは動作しません。ということは予約投稿は失敗します。アクセスが少ないうちは予約投稿するのは避けた方が良い様です。
WordPressのバージョンを確認する
ここまでの方法で解決しない場合は、WordPressのバージョンを確認してみて下さい。あまりにも古いバージョンの場合は動作すべきプログラムが正常に動作しない場合があります。
WordPressの最新のバージョン状況はリリース │ WordPress.orgから確認下さい。
また使用しているWordPressのバージョンを確認するには以下のツール→サイトヘルスの情報タブで確認出来ます。

Cronが正常に動作しているか確認する方法
またステータスタブの中にあるテスト通過のアコーディオン内を確認すると「予約したイベントが実行可能です」との項目があります。この様な状態になっていればCronは正常に動いています。

反対にテスト通過の外にある場合は「予約したイベント ●●●●● の実行が遅延しています」と表示されます。この様な状況だとCronが正常に動作しなかったことを意味します。
Cronが正常に動作している事が確認できたのなら、予約投稿の失敗はCronでは無いので、キャッシュやアクセス数などが原因の可能性があります。
以上が「WPで「予約投稿に失敗」とエラーが出た時の対処法」でした。
今回の方法を試しても直らない場合はもっと深刻なバグが考えられます。こうなったら高度な技術を駆使出来る専門家に依頼しないと直せないレベルかと思います。