今回は「WordPress」を一括編集するときに使えるプラグイン「Search Regex」のエラーについて紹介します。
発生したエラーは「サイトで技術的な問題が発生しています」というもの。
Search Regexを使うたびに、致命的なエラーに関するメールが届いてしまうので、プラグインを書き換えて対処してみました。
はじめに
今回紹介する内容は「Search Regexの技術的な問題が発生していますというメール」について。
WordPressの一括編集でSearch Regexを使おうとすると、いつも以下のようなメールが届いていました。
サイトで技術的な問題が発生しています
こんにちは!
WordPress 5.2から、サイトでプラグインやテーマが致命的なエラーを発生させた場合にそれを検知してこの自動メールでお知らせする機能が追加されました。
今回の場合、WordPress がプラグイン Search Regex でエラーを捉えました。
まずはじめに、ご自分のサイト (サイトのドメイン) を開き、表示上の問題がないか確認してください。次に、エラーが発生したページ (https://ドメイン名/wp-admin/tools.php?page=search-regex.php) を開き、表示上の問題がないか確認してください。
この問題をさらに調査するにはサーバーホストに連絡してみてください。
もしサイトが壊れていてダッシュボードに正常に接続できない場合、WordPress には特別なリカバリーモードがあります。これによりダッシュボードに安全にログインし、さらに調査をすることができます。
https://ドメイン名/wp-login.php?action=enter_recovery_mode&rm_token=**********************&rm_key=***************************
サイトを安全に保つため、このリンクは 1日 で有効期限が切れます。とはいえご心配なく。有効期限後でもこのエラーが再度発生すれば新しいリンクが送られてきます。
エラー詳細
===============
エラータイプ E_ERROR が /home/ID/ドメイン名/public_html/wp-content/plugins/search-regex/view/results.php ファイルの 26 行目で発生しました。 エラーメッセージ: Uncaught Error: Call to undefined method SearchRegex::base_url() in /home/ID/ドメイン名/public_html/wp-content/plugins/search-regex/view/results.php:26
Stack trace:
#0 /home/ID/ドメイン名/public_html/wp-content/plugins/search-regex/search-regex.php(130): include()
#1 /home/ID/ドメイン名/public_html/wp-content/plugins/search-regex/search-regex.php(116): SearchRegex->render('results', Array)
#2 /home/ID/ドメイン名/public_html/wp-includes/class-wp-hook.php(286): SearchRegex->admin_screen('')
#3 /home/ID/ドメイン名/public_html/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array)
#4 /home/ID/ドメイン名/public_html/wp-includes/plugin.php(465): WP_Hook->do_action(Array)
#5 /home/ID/ドメイン名/public_html/wp-admin/admin.php(253): do_action('tools_page_sear...')
#6 /home/ID/ドメイン名/public_html/wp-admin/tools.php(10): require_once('/home/clrmemory...')
#7 {main}
thrown
こんな感じで、”致命的”とか”表示上の問題がないか”とか、ちょっとびっくりするような内容のメールが来るんですよね。
しかも、Search Regexでキーワードを検索するたびに届いていました。
技術的な問題が発生していますの原因
先ほど紹介したような「技術的な問題が発生しています」というエラーは、Search Regexのプログラムが最新のコードに対応していないことが原因みたいです。
WordPressのプラグインページを見るとわかるんですが、Search Regexの最終アップデートは「3年前」なんですよね。
(2019/06/29現在)
プラグインのアップデートがきていないということは、Search Regexに使われているコードも古いということになります。
プログラミング言語は日々変わっています。
そのため、Search Regexがリリースされた当時のコードと推奨する書き方が変わって来るんですよね。
これが、致命的なエラーとして引っかかっているようです。
技術的な問題が発生していますの対処法
では、実際にSearch Regexで「技術的な問題が発生しています」の対処法をみていきましょう。
今回は「プラグインの書き換え」を行うことで対応してみました。
プラグインの書き換えを行なった後にアップデートがきた場合、編集した内容は初期化されるので注意。
Search Regexはそもそもアプデがきてないので問題ないと思います。
WordPressの管理画面から「プラグイン > プラグインエディター」を開いてください。
こんな感じのページが表示されるので、右上の「編集するプラグインを選択」から「Search Regex」を選択します。
見つかったら「選択」をクリックしましょう。
results.phpを開く
続いて、編集するプログラムを開きます。
冒頭で紹介した「技術的な問題が発生していますのメール本文」に以下のような記述がありました。
エラータイプ E_ERROR が /home/ID/ドメイン名/public_html/wp-content/plugins/search-regex/view/results.php ファイルの 26 行目で発生しました。 エラーメッセージ: Uncaught Error: Call to undefined method SearchRegex::base_url() in /home/ID/ドメイン名/public_html/wp-content/plugins/search-regex/view/results.php:26
ここに書かれている通り「results.phpの26行目」を編集すれば良いみたいですね。
先ほど開いておいたプラグインエディターから「view > results.php」と進んでください。
こんな感じのプログラムが表示されました。
では実際にプログラムを書き換えていきましょう。
results.phpを編集しよう
対処が必要なのは「26行目」でしたね。
エディタの数字を参考に、コードの26行目を探してください。
<img src="<?php echo plugins_url( '/images/small.gif', $this->base_url() ); ?>" style="display: none" alt="pre"/>
こんな感じのコードが見つかると思います。
これを、以下のコードに書き換えてください。(コピペOKです)
<img src="<?php echo plugins_url( '/images/small.gif', __FILE__ ); ?>" style="display: none" alt="pre"/>
編集が完了したら、下の方にある「ファイルを更新」をクリック。
これで、プログラムの編集が完了しました。
ただ、画像にも書かれている通り、基本的にプラグインの編集はオススメしません。
プラグインが更新されるたびに編集し直したり、間違った編集をするとプラグインが壊れたりするためですね。
まとめ
今回紹介したように、プラグインを編集することで「Search Regexの技術的な問題が発生しています」に対処することができました。
頻繁に、Search Regexで一括編集を行う方は、致命的なエラーに関するメールが邪魔に感じた方は試してみてください。
ではまた。