「サイトで技術的な問題が発生しています」の原因が Search Regex の場合の対処法
投稿内容を一気に置換できるプラグインの Search Regex を、WordPress 5.2 以降で利用すると、次のようなエラーを告げるメールが届きます。
メールで届くエラー内容
[Webllica] サイトで技術的な問題が発生しています
WordPress 5.2から、サイトでプラグインやテーマが致命的なエラーを発生させた場合にそれを検知してこの自動メールでお知らせする機能が追加されました。
今回の場合、WordPress がプラグイン Search Regex でエラーを捉えました。
(中略)
エラー詳細
===============
エラータイプ E_ERROR が /(サイトのパス)/wp-content/plugins/search-regex/view/results.php ファイルの 26 行目で発生しました。 エラーメッセージ: Uncaught Error: Call to undefined method SearchRegex::base_url() in /(サイトのパス)/wp-content/plugins/search-regex/view/results.php:26
(後略)
対応は必要か?
メールの内容が理解できなくても、Search Regex の処理でエラーが発生したことは分かります。メールの冒頭に「致命的なエラー」と記されているので、驚かれた方も居るでしょう。
しかし安心してください。
このエラーが起こったことで、WordPress に影響を及ぼすことはありません。つまり、そのまま放置しても問題ないということです。
ただ、Search Regex を使う度に同じエラー内容のメールが届いてしまうので、プラグインのソースコードを一部修正して、エラーが発生しないようにする方法を紹介します。
プラグインのソース修正は初心者向きではないので、プログラムを修正するのが怖いと思ったらその時点で修正は行わないほうが良いです。修正自体は難しくないので、対応できそうだと思ったら紹介した通りに行ってみてください。
修正前のバックアップは取らなくても大丈夫です。修正に失敗したら、プラグインを削除してインストールし直せば済みます。
Search Regex でエラーが出ないようにする方法
エラー修正箇所
メール本文にあるエラー発生箇所の /view/results.php ファイルの 26 行目 を修正します。
- WordPress の管理画面を開く
- [プラグイン] メニューから [プラグインエディター] を開く
- 右上の編集するプラグインで [Search Regex] を選択
- 右に表示されるソースリストから view 内の results.php を選択
- 26 行目のエラー箇所を確認して修正
メールに届いたエラーメッセージをよく読むと、26行目の $this->base_url() が原因だと分かります。簡単に説明うすると、この base_url() が定義されていないため読み込みエラーが発生してますといった内容です。
エラー発生箇所のソースコードを修正する
base_url() の未定義によるエラーであるため、この $this->base_url() を __DIR__ に差し替えれば正しく動作します。
<img src="<?php echo plugins_url( '/images/small.gif', $this->base_url() ); ?>" style="display: none" alt="pre"/>
<img src="<?php echo plugins_url( '/images/small.gif', __DIR__ ); ?>" style="display: none" alt="pre"/>
修正部分は枠で囲った部分だけ!
あとは画面下の [ファイルを更新] ボタンを押せば修正完了です。
エラー修正が先か代替アプリの登場が先か
残念ながら Search Regex は最終更新から数年が経過しています。この程度のエラーが改修されない状況では、そろそろ別のプラグインを探さなくてはいけないとも考えています。
ただ正規表現が使えて、ここまで使い勝手の良いものが見つかりません。現状は上記のエラーさえ自分で直してしまえば特に大きな問題はないので、もうしばらくは Search Regex にお世話になろうと思います。
もし程良いプラグインが見つかったら、このブログで改めて紹介する予定です。
以上、Search Regex 利用時にメールで送られてくる致命的なエラーの問題を解決する方法の紹介でした。