WordPress 予約投稿が失敗する原因を徹底解説【原因別対策付き】
- 1 予約投稿が失敗したときに最初に確認すべき3点
- 2 原因:タイムゾーンがずれている
- 3 原因:wp-cron が正しく動作していない
- 3.1 典型的な症状
- 3.2 対策①:リアルcronに切り替える
- 4 原因:キャッシュプラグイン/CDNが原因で表示更新が遅い
- 4.1 対策
- 5 原因:投稿日時を“未来”に設定し忘れている(基本ミス)
- 6 原因:プラグインの競合・テーマの問題
- 6.1 対策
- 7 原因:PHP実行時間制限・メモリ不足で処理が途中で止まる
- 7.1 対策
- 8 原因:時刻変更によるサマータイム・冬時間の影響
- 9 原因:カスタム投稿タイプ・REST API・公開フックの誤用
- 9.1 対策
- 10 原因:Webhook・外部同期ツールとの競合
- 10.1 対策
- 11 原因:cron ジョブの実行間隔が長すぎる
- 11.1 対策
- 12 まとめ
- 12.1 関連記事
投稿の予約機能はブログ運営において非常に便利ですが、時折「予約投稿したはずなのに公開されていない」「予約時刻に公開されない」といったトラブルが発生します。
この記事ではその原因を根本から整理し、順を追って対策できるように解説します。
1 予約投稿が失敗したときに最初に確認すべき3点
- サーバーの時間設定(タイムゾーン・時差)
- クリックスケジュールが動作しているか(wp-cron.php)
- キャッシュが原因で投稿が見えないだけか
これらをまず押さえておけば、トラブルの多くは回避できます。
2 原因:タイムゾーンがずれている
WordPress 管理画面 →「設定」→「一般」→「タイムゾーン」を確認。
サーバーと WordPress 設定の時刻にずれがあると、予約時刻を過ぎても公開されません。
特に海外サーバー・時間帯変更(サマータイム)対応の場合は要注意です。
3 原因:wp-cron が正しく動作していない
WordPress は「投稿の予約公開」を実行するために、内部で :contentReference[oaicite:0]{index=0} を呼び出しています。
この cron が動いていないと、予約投稿は実行されません。
3.1 典型的な症状
- 予約時刻を超えても「公開済み」にならない
- サーバーアクセスが少ないと予約が動かない
3.2 対策①:リアルcronに切り替える
// wp-cron を停止
define('DISABLE_WP_CRON', true);
*/15 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
これで15分ごとに確実に予約投稿処理が実行されます。
4 原因:キャッシュプラグイン/CDNが原因で表示更新が遅い
予約投稿は正常に「公開済み」になっていても、キャッシュが古いまま表示されている場合があります。
特にキャッシュ長め・CDN併用サイトで起こりやすいです。
4.1 対策
- 公開後すぐ:キャッシュクリア(プラグイン・CDN)
- あらかじめ予約投稿設定時:キャッシュ解除時間を短く設定
- 静的キャッシュ利用時:予約投稿時刻+5分程度キャッシュを無効化設定
5 原因:投稿日時を“未来”に設定し忘れている(基本ミス)
予約時刻を「未来」に設定しておくのを忘れると、実際には「すぐ公開」または「下書き」のまま放置されます。
ポイント:プルダウンから “予約日時” を選び、青い「予約」ボタンをクリックすることを確認してください。
6 原因:プラグインの競合・テーマの問題
いくつかのプラグイン/テーマでは予約投稿のフックをキャンセルしてしまうことがあります。
例:カスタム投稿タイプ用予約処理、ページビルダーなど。
4.1 対策
- 最近入れたプラグインを停止してテスト
- テーマを公式テーマ(Twenty Twenty-Twoなど)に切り替えてテスト
- 予約投稿だけ専用ログを出すプラグインを入れて、実行状況を監視
7 原因:PHP実行時間制限・メモリ不足で処理が途中で止まる
予約投稿時には WordPress が内部処理を実行します。
PHPの `max_execution_time` やメモリ上限 `memory_limit` が低いと、処理が失敗することがあります。
4.1 対策
- php.ini または .htaccess で `memory_limit = 256M` 以上に設定
- 同じく `max_execution_time = 300` 程度に設定
- サーバーの負荷状況を監視し、別サーバーへの移行も検討
8 原因:時刻変更によるサマータイム・冬時間の影響
特に海外サーバーを使っている場合、時刻が自動変更され「予約日時」がずれるケースがあります。
サーバー側のタイムゾーンと WordPress のタイムゾーンを一致させましょう。
9 原因:カスタム投稿タイプ・REST API・公開フックの誤用
開発サイトでよくあるのが、カスタム投稿タイプ(CPT)や REST API/公開フックを利用した予約処理が、テーマやプラグインの仕様変更により動かなくなるケースです。
4.1 対策
- 予約投稿用の `wp_insert_post()` に `post_status => 'future'` を使っているか確認
- `save_post` フックで `wp_publish_post()` を誤って呼び出していないか確認
- テーマをアップデートした際に CPT 用予約が未対応になっていないかチェック
10 原因:Webhook・外部同期ツールとの競合
Zapier・IFTTT・Slack連携・外部サービス同期などを入れていると、
「予約投稿→外部同期→公開」 の流れに遅延・失敗が増える可能性があります。
4.1 対策
- 同期対象を限定し、予約投稿から一定時間を空ける
- 同期失敗時のエラーログを確認
11 原因:cron ジョブの実行間隔が長すぎる
`DISABLE_WP_CRON` を設定していない場合、アクセスが少ないサイトで **cron が長時間実行されず** 予約投稿が大きく遅れることがあります。
例:アクセスがゼロ → cronが発動せず →予約されていた投稿が公開されない。
4.1 対策
- `define('DISABLE_WP_CRON', true);` を `wp-config.php` に追加
- サーバー側で `*/15 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1` のようなリアル cron を設定
12 まとめ
WordPress の予約投稿が失敗する原因は多岐に渡りますが、まず確認すべきは「タイムゾーン」「wp-cron の動作」「キャッシュ」の3つです。
そのうえで、プラグイン競合・PHP制限・cron間隔などを順番に潰していきましょう。
予約投稿が確実に動くようになれば、運営の負荷も大幅に減り、記事公開のスケジュール化がしっかり実現できます。
ぜひこの機会に設定を見直して、安定動作を手に入れてください。


