コメント返信で重大なエラー
少し前から、コメントに返信するとこのエラーが発生していました。
「重大なエラー」と言われると不安になりますけど、返信したコメントはちゃんと投稿されているんです。画面を再読込すると、しっかり出てきます。
ですので、実害はないと言えばない。でも気持ち悪いので調べてみることにしました。
調査
WordPressをデバグモードにして画面にエラーを表示させます。具体的には、wp-config.phpに以下を書きます。
define("WP_DEBUG", true ); //WordPressのエラー出力ON/OFF
define("WP_DEBUG_LOG", false );//WordPressのエラー出力先
ini_set("display_errors", 1); //PHPの画面エラー出力ON/OFF
ini_set("error_log", 0); //PHPのエラー出力先
ini_set("log_errors", 0); //PHPのログ出力ON/OFF
ini_set('error_reporting', E_ALL); //最大限出す
こちらの記事を参考にしました。
これを入れてからコメントに返信すると、次の図のようにエラーがズラ~っと表示されました。
これを見ると、どうやらComment Images Reloadedというプラグインがエラーを起こしているようだとわかります。
Comment Images Reloadedは長期放置状態
Comment Images Reloadedプラグインはコメントに画像を複数添付できるようにするもの。こちらがその詳細情報。
最終更新がなんと7年前ですね。随分と前から放置されているようです。これはさすがに使わないほうが良さそうです。
ということで、プラグインを無効化しました。当然、エラーは出なくなりました。
ここまでは良かったのですが、過去に投稿されたコメントについていた画像が表示されなくなってしまっていました。それはやはり困ります。
応急的措置
エラーメッセージを再度見てみます。
/wp-content/plugins/comment-images-reloaded/front/front-functions.php on line 93 Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given
これからわかるのは、
- front/front-functions.phpの93行目で問題が起きている
- count()の引数は可算配列でなければならないがnullが渡されている
と言ったこと。そのファイルをプラグインエディタで見てみます。
93行目の「count($_FILES[$comment_image_id][‘name’])」が問題なのでしょう。多分、存在しないとか。
ふと、その上の行を見ると「if (isset(~」で$comment_image_idが設定されているかと中身がから出ないかのチェックがあります。しかし、これはコメントアウトされています。試しに、これを生かしてみます。
また、対になる閉じカッコを168行目に追加します。
これを行ってみたところ、コメントへの返信でエラーは起きなくなりました。
普通に「3」のコメントが投稿されています。
アイデア募集
さて、とりあえず、対処しましたが、あくまで応急的なもの。このプラグインは何しろ長期放置ですので、削除すべきだと思います。
そうしたときに問題は上に書いたように過去に投稿されたコメントに添付された画像。これをなんとか表示させる方法はないものでしょうか?アイデアを募集します。よろしくお願いします。