WordPress 予約投稿が正しく動作しない時の対処方法

WordPress で予約投稿が正しく動作しない時の対処方法を紹介します。
例えば、ベーシック認証中の環境で予約投稿を実行したい場合に参考になる方法です。

  1. 予約投稿のしくみについて
  2. 原因:ベーシック認証
  3. 原因:タイムゾーン
  4. 原因:キャッシュ系プラグイン
  5. 原因:WordPress のバージョン

予約投稿のしくみについて

WordPress には wp-cron(代替cron)と呼ばれるスケジュールイベントを実行する機能があります。
予約投稿はその機能を使うことで WordPress サイトへのアクセスをトリガーに処理を実行します。
そのため、予約投稿を設定してもサイトにアクセスがなければ実行はされません。

原因:ベーシック認証

ベーシック認証によるアクセス制限があると wp-cron が正しく動作しません。
一つ目の方法として、一度ベーシック認証を解除する。
二つ目の方法は、wp-config.php に次のコードを追加して、ベーシック認証中でも予約投稿の処理を実行させる方法があります。
ただしこの方法は不安定な要素を含むため注意が必要です。

/* ベーシック認証中でも予約投稿を実行させる */
define('ALTERNATE_WP_CRON', true);

詳しくは wp-config.php の編集の代替 cron の項目を参照してください。
この方法で予約投稿が失敗する場合は、おすすめしませんが WordPress の動作するサーバーのIPを認証不要にするなどを試してみましょう。

原因:タイムゾーン

WordPress はサイトを運用している地域の「タイムゾーン」を設定することができます。
この設定が該当する地域と合っていない場合に、予約投稿のタイミングがずれる場合があります。

対処方法として、まずは管理画面のメニューから 設定 > 一般 を選択。
ユーザーの対象を日本国内にするならば、タイムゾーンの項目を「東京」に設定しましょう。

原因:キャッシュ系プラグイン

WP Super Cache や W3 Total Cache などのキャッシュ系プラグインが原因で、予約投稿が正しく機能しない、もしくは設定した時間から公開がずれて表示されてしまう場合があります。
この場合は、プラグイン側でキャッシュの間隔を調整や設定を見直してみましょう。

原因:WordPress のバージョン

まれに WordPress のバージョンによって正しく動作しない場合があります。
アップデートが可能であれば実行してみるのも一つの手ですが、一部のプラグインがバージョンアップに対応していない場合もあるため注意が必要です。
まずはデータのバックアップなどを行ってから実行しましょう。

まとめ

WordPress で予約投稿が正しく動作しない時の対処方法を紹介しました。