WordPress本体の自動更新が止まっていた時の確認手順

次のような状態になっていたら、本件を疑うこと。

  • WordPress本体の自動更新が止まっている
  • 「自動更新を有効にする」リンクが表示されない
  • サイトヘルスに
    「WP-Cron に問題がある可能性があります」 と表示される
  • 予約投稿や更新チェックが正常に動かないことがある

■ 原因

Basic認証(.htaccess)を設定すると、
WordPressが自分自身へ行うHTTPアクセス(ループバック通信)も認証で遮断される。

WordPressの自動更新・予約投稿・各種スケジュール処理は
WP-Cron(疑似cron) によって動作しており、

内部的には次の処理を行っている。

  1. WordPressが wp-cron.php にHTTPアクセス
  2. そのアクセスをトリガーに定期処理を実行

Basic認証があると、このアクセスが401エラーになり、
WP-Cronが完全に停止してしまう。


■ 対処方法(wp-cron.phpのみ認証除外)

Basic認証は維持したまま、
wp-cron.php だけ認証対象外にする。

.htaccess のBasic認証設定の直後に、以下を追加する。

▼ 追加設定

<Files wp-cron.php>
    Satisfy Any
    Order Allow,Deny
    Allow from all
</Files>

■ Apache2.4環境の場合(推奨記述)

サーバーがApache2.4系の場合は、以下の書き方でも可(こちら推奨)。

<Files "wp-cron.php">
    Require all granted
    Satisfy any
</Files>

■ この設定で何が変わるか

対象状態
サイト全体Basic認証で保護
管理画面保護されたまま
wp-cron.phpWordPress内部実行のみ許可

セキュリティを保ったまま、WP-Cronだけ正常動作に戻せる。


■ このトラブルが起きやすいケース

  • 開発環境/検証環境でBasic認証を設定した
  • 公開前サイトにアクセス制限をかけた
  • 久しぶりに管理画面を見たら更新が止まっていた

WordPressの仕様上、Basic認証とWP-Cronは相性が悪いため頻出。


■ 今後の予防ルール

Basic認証を設定する際は、必ず以下も同時に設定すること。

「wp-cron.php の認証除外をセットで入れる」


■ 参考(不具合の典型例)

  • 自動更新が数か月止まる
  • 予約投稿が公開されない
  • サイトヘルスでループバックエラー表示

→ まずBasic認証の有無を確認すること。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA