こんにちは、リュウセイです。
wordpressの予約投稿ってなぜか失敗する時がありますよね。
僕もブログを始めた当初はよく予約投稿に失敗していました。
予約投稿が失敗してしまう原因として考えられるものを5つ(+1つ)用意したので、参考になれば幸いです。
目次
WordPressの予約投稿が失敗する原因とは?【5つの原因】
それではさっそく解説に移りたいと思いますが、その前に一つ確認です。
「予約投稿」はちゃんとクリックしましたか?
もし上記に当てはまったら、それは記事の編集後に予約投稿のボタンを押し忘れている可能性があります。
ここから先を読み進める前に、一度確認してみることをおすすめします。
①キャッシュ系プラグインを使っている
WP File CacheやWP Super Cacheなどのキャッシュ系プラグインによってCronが正常に処理できなくなり、予約投稿が失敗してしまうケースもあります。
Cronとは
予め設定した時間に決められたプログラムを実行するためのOSです。
このような場合における解決策は次の2つです。
- 代替Cronを設定する
- キャッシュ系プラグインを削除(或いは無効化)する
WordPressには、Cronが正常に動作しなくなった時に備えて、「代替Cron」という仕組みが標準で備わっています。
Cronの代わりに動作する予備のCron、ということですね。
一番の解決は、キャッシュ系プラグインを削除(または無効化)する方法ですが、なるべくなら削除したくないという方もいるでしょう。
そんな時は、代替Cronを設定してみるのがおすすめです。
「wp-config.php」に下記コードを記述しましょう。
define('ALTERNATE_WP_CRON', true);
ただし、代替Cronを設定しても相変わらず予約投稿に失敗してしまうケースもあります。
もし上手くいかないのであれば、プラグインを停止させる他ありません。
停止させてもなお解決しないようであれば、ファイルサーバ内に残ったキャッシュデータが原因として考えられます。
FTPツールでサーバにアクセスして、以下のファイルの内どれか1つでもある場合、手動で削除してみましょう。
- wp-content/wp-cache-config.php
- wp-content/advanced-cache.php
- wp-content/object-cache.php
②WordPressのバージョンが古い
WordPressは、なるべくなら常に最新のバージョンにしておいた方が良いです。
でも、最新版へバージョンアップすることで何かしらの不具合が発生してしまうケースもあるので、それを懸念する人もいるでしょう。
もし最新バージョンのアップデートによって不具合が発生した場合は、WordPressのダウングレード(古いバージョンに戻すこと)をすれば一旦は大丈夫です。
プラグインは「WP Rollback – WordPress プラグイン | WordPress.org 日本語」がおすすめです。
③ベーシック認証を設定している
ログインIDやパスワードを使わないとアクセスできないようにするのがベーシック認証ですが、これも予約投稿が失敗してしまう原因の一つになります。
詳しい仕組みは分からないですが、予約投稿を実行する時にベーシック認証によるアクセス制限が発動し、Cronを阻害してしまうケースもあるようです。
後述するプラグインを使うことで、ベーシック認証を適用したままでも(恐らく)予約投稿が出来るようになると思うので、試してみてください。
④サイトへのアクセス数が少ない
実は、WordPressの予約投稿(Cron)は「予約投稿する時間帯にアクセスがあった場合に処理を実行する」という仕様みたいです。
「みたい」と言っていますが、僕の実体験から基づいて、本当にこの仕様になっていると94%断言できます。
ブログを始めたばかりでアクセス数が少なった当時は、結構な頻度(2~3回に一度)で予約投稿に失敗していました。
「予約投稿に失敗しました」というエラー文が出るので一目で分かりますよね。
結局、僕は後述するプラグインを使って解決させました。
当時に比べるとアクセス数が増えてきた今では、予約投稿は99.9%失敗しません。
アクセス数が少ない目安は、一日10PV未満くらいです(当時の僕がそうでした)。
Googleアナリティクスでアクセス解析して、今の数値を確認してみましょう。
⑤タイムゾーンが「東京」または「UTC+9」になっていない
タイムゾーンとは、世界各国の地域に合わせた時間帯を設定できる機能です。
要は現地時間を設定できる機能ということですね。
WordPressメニュー「設定」→「一般」を開き、(日本に住んでいるなら)タイムゾーンの設定が「東京」もしくは「UTC+9」になっているか確認してみてください。
もし現在時刻と記事の編集画面で表示されている予約日時の時刻が異なっている場合は、タイムゾーンの設定に問題があるかもしれません。
どうしても解決できないのならプラグインを使おう
上で解説した方法のどれを試しても解決しなかった場合は、ここで紹介するプラグインを使ってみてください。
15分間隔で失敗した予約投稿をチェックして投稿してくれる「WP Missed Schedule」

「WP Missed Schedule」は、15分置きに予約投稿のスケジュールを確認し、正常に働いていない場合のみ処理を実行させるというプラグインです。
有効化するだけでいいので設定は必要ありません。
アクセス数が増えてきたら予約投稿には失敗しなくなると思うので、それまでの繋ぎとして入れておくと良いでしょう。
それでは、以上です。
ありがとうございました。