ACF Proのフィールドを増やした途端、エラーが頻出。
Fatal error: Allowed memory size of 〇〇〇 bytes exhausted (tried to allocate 〇〇〇 bytes) in wpフォルダ/wp-includes/meta.php on line 1078
発生状況
- 柔軟コンテンツの中に柔軟コンテンツが入れ子になったフィールドグループがある。
- フィールド数は200オーバー
- テストサイトのトップなので、実験で追加したオプション、使わなくなって放置したオプション等、多数
上記エラーのほか、フィールドの表示スタイルが「WP標準」になったり「シームレス」になったり、「タブ」フィールドの表示が崩れたり。
エラーが出なくなるまでmemory_limit、post_max_sizeあたりを増やしていく、という対応をする場合が多いと思いますが、今回はデモサイトで起きたので原因を探ってみた、というお話。
対応
- 有効プラグインを減らす ⇒ ✖
構築時のみに使うようなもの、更新が古く不安定なものを無効化してみるも、状況は変わらず。 - フィールド数を減らす ⇒ ✖
エラー発生前と同じ数にしてみるも変わらず。 - ページデータのリセット ⇒ 〇
エラーの出る固定ページを削除し、新規ページで同じコンテンツを再現したところ、エラーは出なくなった。更新も早くなった気がする。
明確な答えは出ませんでしたが、
結局、ページデータ自体が膨らみすぎてしまった、ということのようです。
ACF Proのフィールド数はそのきっかけに過ぎなかったのかな、と。
いろいろ実験・検証するデモサイトならではのエラーで、
- お客様サイトで発生することはあまりない
- 万が一起きたら新規ページに差し替えてページデータをリセットする(idが変わっちゃうけど)
- フィールド数はほどほどに!
でOKかな?という暫定的結論となりました。
2021.03.13 追記 – 固定ページを削除できない
「エラーの出る固定ページを削除し、」と書いていますが、正確にはゴミ箱に入れただけでした。
後で「完全に削除する」を実行したところ、タイムアウトでまたもや「Fatal error~」。削除できない。
編集はできるので、復元してから本文やカスタムフィールド値を削除してもダメ。
「データベースを直接消すか、、、探すの大変だな。」と思い試行錯誤。
プラグイン「Post Type Switcher」で固定ページ⇒カスタム投稿タイプに変換したところ削除成功。
データがきれいに消えたかはわからないし、問題解決ではないのですが、ひとまずお手軽に問題回避。