こんなお悩みを解決します。
お客様より連絡をいただき、トラブルシューティングした方法を実例で紹介します。
今回問題が発生した構成です。
サイトヘルス機能を使ったら、致命的な問題が1件、お勧めの改善が1件表示される
致命的な問題エラーの詳細
バックグラウンド更新は使用中の WordPress のバージョンにセキュリティ更新がリリースされた際、自動更新できることを保証します。
エラー プラグインは wp_version_check() を無効化してアップデートを防ぎました。
OK バージョン管理システムは検出されませんでした。
OK この WordPress サイトでは更新の実行の際に FTP 情報が必要となりません。
OK すべての WordPress ファイルが書き込み可能です。
OK以外の項目「エラー プラグインは wp_version_check() を無効化してアップデートを防ぎました。」が問題です。
「wp_version_check()はWordPressの関数で、新しいバージョンのワードプレスがあるかを確認するものです。新しいバージョンが公開されると、ダッシュボード上に以下のような更新通知が表示されます。
標準的に表示される通知ですが運用上の都合により、この通知を非表示にすることもできます。
複数人の管理者権限で運用しているケースで、事前検証無しにうっかり更新してしまうことを防止するといった目的です。
今回の事例では、サイトの管理者権限アカウントを運用しているのは一人のユーザーとのこと。
wp_version_check()関連については一切変更はしていないことを確認しました。
※ここからの作業はサイトに影響が出ます。
プラグインを停止することでサイトの機能が一部停止することになります。クライアントのサイト等、ダウンタイムが許されない作業者の方は、有効化しているテーマ・プラグインをコピーした検証用にサイトを作成し、テストサイト上でトラブルシューティングを行いましょう。
検証サイトの作成例
エラー内容的にDB内に保存されている情報は関連がなさそうなので、サイトのフル構成は使いません。
All-in-One WP Migrationプラグイン等の引っ越しプラグインは使いません。
本番環境のサイトから、テーマとプラグインをダウンロードしてテスト環境にアップロードし有効化しましょう。FTPを使うのが面倒な人は、管理画面からテーマとプラグインをダウンロードしましょう。以下に簡単な方法をまとめてあります。
いざ検証です。
エラー内容に書いてある通り、有効化しているいずれかのプラグインがwp_version_check()を無効化している可能性があります。どのプラグインが問題の原因かを特定します。
この流れで、致命的な問題のエラーが消えるまでプラグインを停止していきます。作業中にエラーが消えれば、原因のプラグインが特定できたことになります。
原因のプラグインについては停止して運用を行うか、最新バージョンがないかを確認しましょう。既に最新バージョンを利用していて、運用に欠かせない場合は以下の対応を行います。
ちなみに今回のお客様はプラグインが原因ではありませんでした。
プラグインを停止しても致命的な問題エラーが消えない場合は、テーマを確認します。
エラー内容的にプラグインかと思いきや、テーマが問題の原因となっている可能性があります。プラグイン同様に、有効化しているテーマに原因がないかを特定していきます。
運用中のサイトのダウンタイムが許容できない場合は、検証サイト上でテーマの切り替えテストを行いましょう。
検証用に有効化したテーマに不具合があると、今回の障害切り分け作業の意味がなくなってしまいます。
WordPress公式チームが提供しているデフォルトテーマを使いましょう(例:Twenty NineteenやTwenty Twenty等)。
今回のお客様サイトでは、テーマをデフォルトテーマに切り替えた後エラーが消えました。
つまり自作テーマが致命的な問題の原因でした。
テーマにあるwp_version_check()を無効化しているファイルを特定する必要があります。
関数系の記述といえばfunctions.phpです。テーマ内のfunctions.phpを確認しwp_version_check()に関する記述があるかを確認しましょう。
以下のような記述がないかを確認しましょう。これらはWordPressの更新をストップするコードです。
更新をチェックする関数
今回の事例では問題のコードはありませんでした。
テーマ内で原因を特定します。
先ほどの更新を無効化する関数がfunctionss.php以外のファイルに記載していないかを確認します。
パソコンにテーマをダウンロードして、テキスト検索しても良いですし、特定の文字列を見つけるプラグインを使っても構いません(例:String locator)。
ちなみに今回の事例ではfunctionss.phpにも、その他のファイルにもWordPressのアップデートを無効化・非表示にするコードは見当たりませんでした。
以前マルウェアに感染したことを頼りに再度functions.phpを確認しました。
よく見ると、functions.phpの先頭に「赤い点」があります。
テーマエディター上で赤い点を選択し削除し、「保存する」を試みるとエラーが表示されファイルの編集をすることが出来ませんでした。
エラー内容は「何かうまくいかなかったようです。変更が保存されていないかもしれません。」です。
このエラーはレンタルサーバーや、プラグインのWAF。またはファイルの文字コードの問題により発生することが多い症状です(もし同じエラーで苦しんでいる方がいれば、以下に対応方法まとめておきましたので参考にしてください)。
【解決】WPエラー「何かうまくいかなかったようです。変更が保存されていないかもしれません。手動で修正し、FTP 経由でファイルをアップロードすることもできます」
functions.phpファイルの編集を可能な状態にした後、ファイル先頭にある赤い点を削除したところ、今回のサイトヘルスの警告が消えました。いまだに謎な事象です。functions.phpに記述のあるカスタム投稿などの他の関数については問題なく動作していましたので、ファイル自体が完全に無効化していた訳ではありません。
サイトヘルスはWordPress5.2から追加された新機能です。正直あまり利用したことがありませんでした(汗)。
今回トラブルを抱えたお客様の対応ということで、改めてサイトヘルスのチェック機能について調べる良い機会になりました。
有効化していないテーマの削除、停止中のプラグインの削除の停止等、仮にエラーが出ていても、すぐに対応の必要のないものもあるようです。
テーマを切り替えたタイミングや、ワードプレスのバージョンアップ後等、時間に余裕がある際にサイトヘルス機能を使ってサイトの安全性を検証してみましょう。
人気記事 初心者でも可能なSEO対策って何?
人気記事 【ゼロから始める】副業ブログで月5万円を稼ぐ!当社スタッフが試してみた方法と成果を公表