WordPressで突然発生したウィジェット関連の致命的なエラー(Fatal error)について、実際に起こったトラブルとその対処法をまとめました。
発生したエラー内容
ある日、WordPressの管理画面の「外観 → ウィジェット」を開こうとしたら、以下のようなエラーが出ました。
Fatal error: Uncaught TypeError: array_merge(): Argument #4 must be of type array, null given in …
これはかなり深刻そうです。
エラーの原因
このエラーは、array_merge()
関数に渡される引数の一つが null
(空)であるのに配列であるべきところで起きています。
つまり、WordPressの内部でウィジェット情報を取得・合成する処理中に「壊れたデータ」が混ざってしまっているという意味のようです。
どう対処したか?
1. Classic Widgetsプラグインで旧エディターに戻すが解消せず
まずは、新しいブロックウィジェットエディターの不具合の可能性を疑い、Classic Widgetsプラグインで元のエディターに戻してみました。
→ しかし問題は解決せず。
2.テーマ切り替えを試みるも、さらに深刻なエラーに発展
テーマがPHP8に対応できていない事が問題ならテーマを変えることでウィジェットを修正できるようになるかと思い変更をしたところ、うっかり古いテーマに切り替えてしまいホームページも管理画面も全て表示できなくなってしまいました。
この方法は確実にPHP8に対応しているテーマに切り替えるのであればうまく行きそうではありました。
サーバーのPHPバージョンを落とせない場合には有効かもしれません。
エラーの理由と対処
create_function()
はPHP7.2で非推奨になり、PHP8.0以降では削除された関数です。
古いテーマで使われているこの関数が原因で、現行のPHPバージョンで動かなくなっていたことがわかりました。
解決策
- XサーバーのPHPバージョンを一時的に7.4に下げる(
create_function()
が使える環境に戻す)
これでウィジェット含めすべてが正常に表示できるようになりました。
まとめと今後の注意点
- WordPressのウィジェットエラーは内部データの破損が原因の場合が多い
- 古いテーマを使っている場合は、PHPのバージョンアップに伴い使えなくなる関数があるため注意
- テーマはできるだけ最新のものを使い、PHPバージョンも最新に近いものを維持するのが理想
もし同じようなエラーが起きたら、まずは焦らずに今回の対処法を試してみてくださいね。
また、テーマやPHPの互換性問題についても早めの対応がおすすめです。