WordPressのサイトヘルスステータスで問題発生時の解消方法

サイトヘルスステータスとは

WordPress 5.2で追加されたサイトの問題を一覧化してくれる機能。

ツール => サイトヘルスまたは/wp-admin/site-health.phpのURLから利用可能。
ツール => サイトヘルスまたは/wp-admin/site-health.phpのURLから利用可能

サイトヘルスステータスに「おすすめの改善」または「致命的な問題(critical issue)」と表示された際はすぐに改善をしたほうが良い。

「おすすめの改善」は対応しない人もいるが、放置すれば将来的には「致命的な問題(critical issue)」になる。

サイトに問題があると現在は以下のようなテキストが表示される。この記事ではこれらの改善方法について記述した。

    • 新しいバージョンのWordPressが利用可能です
    • 更新可能なプラグインがあります
    • 停止中のプラグインを削除してください
    • 停止中のテーマを削除してください
    • 使用中のPHPバージョン(7.2.17)は古すぎます
    • 1つ以上の推奨モジュールが存在しません
    • サイトで HTTPS を使用していません
    • バックグラウンド更新が想定通りに動作していません
    • プラグインは wp_version_check() を無効化してアップデートを防ぎました。
    • サイトでループバックリクエストが完了できませんでした
    • REST API は正しく動作しませんでした
    • 古いデータベースサーバー

新しいバージョンのWordPressが利用可能です

ダッシュボード画面上にあるWordPressの更新へのリンク(/wp-admin/update-core.php)から更新する。

WordPressはバックグラウンド更新を有効にして自動更新するようにしておく。

更新可能なプラグインがあります

「インストール済みプラグイン」のページからプラグインを更新する。

停止中のプラグインを削除してください

「インストール済みプラグイン」のページで停止中のプラグインを削除する。

停止中のプラグインは攻撃者の標的になるため、WordPressでは削除することが推奨されている。

停止中のテーマを削除してください

「外観 => テーマ」のページで停止中のテーマを削除する。

停止中のテーマも攻撃者の標的になるため、WordPressでは削除することが推奨されている。

使用中のPHPバージョン(7.2.17)は古すぎます

PHPバージョンは7.2.17とは限らず、古すぎると「致命的な問題(critical issue)」になる。

WordPressが推奨するバージョンのPHPに切り替えられないレンタルサーバーの場合は別のレンタルサーバーに乗り換えたほうが安全。

WordPress を実行するには、以下のホスティング環境を推奨します。

1つ以上の推奨モジュールが存在しません

ここでいう「推奨モジュール」とはWordPressホスティングチームで推奨しているモジュールのこと。

レンタルサーバーだと「imagick」が存在しないことがあるが、その場合はレンタルサーバーを変えなければ改善不可能。

もしも「1つ以上の必須モジュールが存在しません」と表示された場合、WordPressが正常に動作しない可能性が高いので要改善。

サイトで HTTPS を使用していません

昔は少し敷居が高かったhttps化(SSL化)だが現在はレンタルサーバーなら標準機能として用意されているので、これが表示されることはまずないだろう。

バックグラウンド更新が想定通りに動作していません

バックグラウンド更新はデフォルトだと有効になっている。

しかし、wp-config.phpでAUTOMATIC_UPDATER_DISABLEDがtrueになっているとバックグラウンド更新が停止してしまう。

define('AUTOMATIC_UPDATER_DISABLED', true);

すべての更新ではなくメジャーアップグレードやマイナーアップデートを停止させるのも良くないので以下のような記述を追記するは極力避けたほうが良い。

add_filter('allow_major_auto_core_updates', '__return_false');
add_filter('allow_minor_auto_core_updates', '__return_false');

WordPressが自動更新されるとWordPressの最新バージョン自体に問題があると表示崩れなどの問題が発生する可能性があるため、バックグラウンド更新を意図的に停止しているWebサイトが存在する。

だが、バックグラウンド更新を停止させるほうがリスクが高く、WordPress側も非推奨としているので停止させないほうが良い。

wp-config.phpで停止させていなくてもKUSANAGI for Vagrantのように独自の更新機能を備えているため自動更新機能が無効になっているケースも稀にある。

余談だがfunctions.phpにWordPress本体やプラグインの更新通知をオフにするような設定も同様にリスクが高いので、記述されていたらすぐに削除したほうが良い。

// functions.php
add_filter('pre_site_transient_update_core', '__return_zero');
add_filter('pre_site_transient_update_plugins', create_function('$a', "return null;"));
remove_action('wp_version_check', 'wp_version_check');
remove_action('admin_init', '_maybe_update_core');
remove_action('load-update-core.php', 'wp_update_plugins');

プラグインは wp_version_check() を無効化してアップデートを防ぎました。

何かのプラグインが原因で表示されているケースが多いが、何のプラグインの影響なのかはプラグインを1つずつ無効化してこのメッセージが非表示になるのを確認するしかない。

日本国内だとSiteGuard WP Pluginの「管理ページアクセス制限」の設定で「除外パス」「site-health.php」が含まれていないことが原因で発生するケースをよく見かける。

サイトでループバックリクエストが完了できませんでした

文字通りWebサイト内でループバックリクエストが完了できなかったことが原因で発生する。

SESSIONやループの記述ミスが原因で発生することがあるので、PHPコードを修正している場合は該当する箇所がないか確認する。

PHPコードを修正していないのに表示される場合はプラグインが原因の可能性が高いので、プラグインを1つずつ無効化してこのメッセージが非表示になるのを確認するしかない。

REST API は正しく動作しませんでした

PHPにREST APIを無効化する処理(rest_disabledなど)が追記していないか確認する。

ほかにも以下のようなエラーが表示されることがある。

  • REST API はクエリーパラメータを正しく処理しませんでした。
  • REST API の呼び出しは、以下の予期しない結果でした
  • REST API で予期しない結果が発生しました
  • REST API リクエストはエラーのために失敗しました。
  • REST API でエラーが発生しました

古いデータベースサーバー

WordPressの推奨データベースサーバーのバージョンに満たないと表示される。

推奨バージョンを満たしているレンタルサーバーが少なく、よほど古いバージョンでなければ問題になることはないので無視して良い。

WordPress を実行するには、以下のホスティング環境を推奨します。