WordPressで画像があるページを編集している時に、以下のエラーコードが出て困った!という出来事があったので対処法をまとめました。
遭遇したエラーコードはこちらです。
Warning: Undefined array key "file" in ~~ wp-includes/media.php on line 1764
※~~の部分にはそのWordPressがインストールされているディレクトリパスが入ります
※line 1764
の部分はWordPressのバージョン等によって異なる可能性があります
これはなに?というところから、このエラーの対処法についてまとめます。
このエラーはなに?
投稿本文内で、画像を追加する際に出力されるはずのコードと、登録されている画像の情報がなんか合致していない時にこのエラーが出ます。具体的にはこんな条件で出現する事があるエラーです。
- PHP8環境にWordPressをインストールしている
- ブロックエディタを利用している
- 画像を追加しているページ/投稿
- 画像を表示するhtmlタグ内の情報と、実際にメディア欄に登録されている画像ファイルの情報が合致しない
例えば、画像ブロックでPDFファイルを選択して画像として配置した時や、画像ブロックを含んだ状態で別サイトの本文エディタからブロックをコピペしてきた時とかに遭遇しやすいです。
また、これまでこのエラーが出ていなかったものの、サーバーのPHPのバージョンを8に上げたら出るようになった!ということも遭遇のしかたとしては多いかもしれません。というのも、このエラーが出る原因のひとつとして、PHP8ではこれまでゆるくても許されていた部分がすごく厳格になってしまったため、これまでエラーを出さなくてもいいかな…となっていた不一致に対しても厳しくエラー表示が出るようになってしまったんですよね…。
対処法
エラーコードが出た時は指摘されているファイルのスクリプトを修正しないと!と思いがちですが、このエラーはWordPressコアのコードに対しての指摘になるので、コードを修正することはおそらくできないものと考えた方がよいでしょう。
ということで、エラーが出た投稿の内容を見直して修正していきましょう!
対処法1:画像をアップロードしなおす・PDFの場合は適切なブロックを使う
すでに追加している画像ブロックを一旦削除して、画像を上げ直すところからやると直りやすいです。
エラーは問題がある画像の数と同じ数出るので、そのページに配置している画像の数と同じ数表示されているわけではない場合は、問題のある画像だけ削除して上げ直せばOKです。
また、PDFを画像ブロックで配置しているよ!という場合はファイルブロックを使って配置するように変更しましょう。
PDFをアップするとPDFの表紙のサムネイルを画像として作ってくれたりしますが、これを使いたいぞ!という場合でもこのエラーが出ている場合は改めて自分でサムネイルを画像を作ってアップロードしたものを使いましょう。
対処法2:コードエディターにしてclassを消す
登録されている画像の情報がなんか合致していない=記述されている画像のID情報が付加されているclass属性と実際の画像のIDが異なる、ということなので、class属性に書かれているIDを正しいIDに修正する or 消してしまえば直ることがあります。
とはいえ、ブロックエディタだとこのclassを直接編集できないため、コードエディターに変更してhtmlを直接変更します。

ブロックエディタのビューをコードエディターに切り替えて、html上の画像を配置しているあたりの以下の記載を調整してみましょう。
<img src="~~" alt="~~" class="wp-image-XXXX"/>
<img src="~~" alt="~~" class="wp-image-1234"/>
▲表示している画像のIDになるように修正します
<img src="~~" alt="~~" />
エラーを消すためにやってはいけないこと:PHPのバージョンを下げる
PHP8でこのエラーが出るなら、サーバーのPHPのバージョンをエラーが出ないバージョンまで下げればいいんじゃない?と考えてしまいがちですが、投稿の内容を修正することで消せるエラーなのでPHPのバージョンを下げて対応する、というのはやめましょう。サーバーのPHPのバージョンが低いままにしておくとセキュリティ的な問題が発生したり、WordPressのバージョンが上がっていけばWordPress自体が動かなくなる未来が待っています。投稿の内容を修正することで直るエラーは投稿の内容を修正することで対応しましょう。
WordPressをPHP8環境で運用をしていると、これまではそんなエラー出なかったじゃん…!というエラーに遭遇することがままあります。自分でコードを書いていないところでエラーが出ていると焦ってしまうかと思いますが、意味がわかれば修正できるエラーも多いので諦めずがんばりましょう…!
同様の状況に遭遇した方の参考になれば幸いです。