WordPressの新規投稿画面で「Cannot use output buffering」のFatal errorが出た→Gutenbergプラグイン停止で解決

WordPressで新しい記事を書こうとしたところ、突然「投稿を追加」の画面が開かなくなりました。
画面に表示されたのは、WP_HTML_Tag_ProcessorとCannot use output bufferingというFatal error。エラーにはWordPress本体のファイル名が出ていたため、最初はWordPress本体の不具合にも見えました。
ただし、WordPress本体を直接書き換えるのは危険です。今回は本体ファイルには触らず、プラグインを一つずつ切り分けたところ、Gutenbergプラグインを停止することで解決できました。
同じエラーで投稿画面が開かなくなった方の参考になるよう、確認したことを記録しておきます。
発生した症状
WordPress管理画面で「投稿」→「新規投稿」を選ぶと、ブロックエディターが表示されず、次のエラーだけが表示されました。

Fatal error: WP_HTML_Tag_Processor::apply_attributes_updates():
Cannot use output buffering in output buffering display handlers
新規投稿だけでなく、特定の既存記事を編集しようとしたときにも同じエラーが発生しました。一方、投稿一覧やブログのトップページなどは開ける状態でした。
発生時の環境
- WordPress 7.0.2
- PHP 8.1.34
- 使用テーマ:Lightning Child Sample
- 親テーマ:Lightning 15.37.1
- Gutenberg 23.6.2
- WP-Optimize 4.6.1
WordPress本体のファイルは編集しない
エラーには次のWordPress本体ファイルが表示されていました。
wp-includes/html-api/class-wp-html-tag-processor.php
しかし、ここは必ずしも原因そのものではありません。別の処理から呼ばれた結果、WordPress本体のHTML処理でエラーが表面化している可能性があります。
エラーが表示された行をコメントアウトしたり、@でエラーを抑制したりすると、一時的に画面が表示されても根本的な解決にはなりません。WordPressの更新時に上書きされる問題もあるため、本体ファイルには触れませんでした。
output bufferingとは?
PHPには、生成したHTMLをすぐブラウザーへ送らず、いったんメモリー上のバッファにためてから加工・出力する仕組みがあります。これがoutput buffering(出力バッファリング)です。
キャッシュ、HTML圧縮、文字列置換などで使われますが、出力バッファの表示処理中に、さらに対応できないバッファ処理が実行されると、今回のようなFatal errorになることがあります。
今回も、WordPressのHTML処理とプラグイン側の処理が競合している可能性を考えました。
最初に確認したこと
まず、次の情報を確認しました。
- WordPressとPHPのバージョン
- 有効化されているプラグイン
- 使用中の親テーマと子テーマ
- Code Snippetsで有効になっているコード
- キャッシュやHTML軽量化に関係するプラグイン
- Gutenberg関連プラグイン
WP_DEBUGなどの設定
Code Snippetsでは4件のコードが有効でした。the_contentを加工するコードもありましたが、管理画面でob_start()を実行したり、出力バッファのコールバックを登録したりする処理は確認できませんでした。
最近追加したコードだけを決めつけて無効化するのではなく、どの画面で実行されるコードなのかを見るのが大切です。
プラグインを一つずつ停止して切り分け
現在の有効プラグインを記録したうえで、出力処理に関係しそうなプラグインを短時間だけ停止し、毎回同じ画面を開いて確認しました。
WP-Optimizeを停止
WP-Optimizeを停止すると、新規投稿画面は正常に開きました。
ところが、エラーが発生していた既存記事の編集画面では、まだFatal errorが表示されました。WP-Optimizeもエラーの発生条件に関係していそうですが、これだけが原因ではなさそうです。
独自プラグインを停止
管理画面を加工する独自プラグインも一時停止しましたが、既存記事のFatal errorは変わりませんでした。このプラグインは原因ではなかったため、すぐに有効へ戻しました。
Gutenbergを停止
次にGutenbergプラグインを停止したところ、新規投稿画面と既存記事の編集画面の両方が正常に開きました。
さらに、Gutenbergを停止した状態でWP-Optimizeを有効へ戻しても、両方の画面は正常でした。
| プラグインの状態 | 新規投稿 | 既存記事の編集 |
|---|---|---|
| Gutenberg・WP-Optimizeともに有効 | Fatal error | Fatal error |
| WP-Optimizeのみ停止 | 正常 | Fatal errorが継続 |
| Gutenbergを停止 | 正常 | 正常 |
| Gutenberg停止・WP-Optimize有効 | 正常 | 正常 |
今回の解決方法
最終的に、Gutenberg 23.6.2を停止しました。
WordPress 7.0.2にはブロックエディターが標準で組み込まれています。そのため、別途インストールしたGutenbergプラグインを停止しても、通常のブロックエディターは利用できます。
Gutenbergプラグインは、WordPress本体へ導入される前の新機能などを試す役割もあります。先行機能が必要でなければ、常に有効化しておく必要はありません。
WP-Optimizeと、切り分けのために一時停止した独自プラグインは、元の有効状態へ戻しました。
修正後に確認したこと
- 新規投稿画面が正常に開く
- 既存記事の編集画面が正常に開く
- ブロックエディターにタイトルと本文が表示される
- 新しい下書きを保存できる
- テスト記事を公開できる
- メディア追加画面が開く
- 公開済み記事が正常に表示される
- ブログのトップページが正常に表示される
動作確認用の記事は、確認後にゴミ箱へ移動しました。
同じエラーが出たときの確認ポイント
- WordPress本体のファイルを直接編集しない
- エラーに表示されたファイルだけを原因と決めつけない
- 現在の有効プラグイン一覧を記録する
- Gutenberg、キャッシュ、軽量化、SEO、HTML加工系を優先して確認する
- Code Snippetsのコードと適用範囲を確認する
- プラグインを一つずつ短時間停止する
- 毎回、同じ新規・既存投稿画面で再現確認する
- 原因でなかったプラグインは元へ戻す
- 修正後は管理画面だけでなく公開ページも確認する
本番サイトでプラグインを停止するときは、フォーム、決済、キャッシュ、セキュリティなどへの影響も考える必要があります。一括停止ではなく、影響が小さい候補から一つずつ確認するのが安全です。
まとめ
今回のFatal errorは、WordPress本体のWP_HTML_Tag_Processorで表示されていましたが、本体ファイルの不具合として直接書き換える必要はありませんでした。
WordPress 7.0.2、Gutenberg 23.6.2、WP-Optimize 4.6.1の組み合わせを切り分け、Gutenbergプラグインを停止することで、新規投稿と既存記事の編集画面が正常に戻りました。
WordPress本体のファイル名が表示されると、ついそのファイルを直したくなりますが、触っちゃダメです(触った後に相談されることがよくあるので・・)。
同じエラーで投稿画面が開かなくなった方の参考になれば幸いです!
10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント
あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?
私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。
それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。
しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。
そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。
・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!
という方は今すぐ無料でダウンロードしてください。
期間限定で、無料公開しています。
※登録後に表示される利用条件に沿ってご利用ください
