【WordPress】クラシックエディターでビジュアル切替するとHTMLが崩れる!原因と7つの対策を徹底解説

【WordPress)クラシックエディターでビジュアル切替するとHTMLが崩れる! WordPress
この記事は約25分で読めます。
  1. そもそも何が起きているのか? ― 症状の具体例
    1. 症状1: 空のタグが削除される
    2. 症状2: pタグとbrタグの自動変換
    3. 症状3: HTMLエンティティがデコードされる
    4. 症状4: インラインスタイルの改変
    5. 症状5: コードがminify化される(改行・スペースの消滅)
  2. なぜ崩れるのか? ― TinyMCEの自動整形の仕組み
    1. TinyMCEが行う自動処理の一覧
    2. 崩れが発生するタイミング
  3. 【対策①】TinyMCEの自動整形を無効化する(functions.php)
    1. 各パラメータの解説
    2. minify化(改行・スペースの消滅)を防ぐ追加設定
    3. それでもminify化が解消しない場合 ― switchEditorsの無効化
    4. switchEditors無効化の副作用を詳しく理解する
  4. 【対策②】wpautopフィルターを無効化する
    1. wpautopを無効化する際の注意点
    2. 特定の投稿だけwpautopを無効化する方法
  5. 【対策③】プラグインで対処する
    1. Advanced Editor Tools(旧:TinyMCE Advanced)【おすすめ】
    2. Preserved HTML Editor Markup Plus(開発終了)
    3. Raw HTML Pro
  6. 【対策④】ショートコードでコード部分を保護する
    1. 使い方
    2. ショートコードの拡張:言語指定に対応する
  7. 【対策⑤】Syntax Highlighterプラグインを使う
    1. おすすめプラグイン
  8. 【対策⑥】カスタムHTMLブロック(ハイブリッド運用)
  9. 【対策⑦】最も確実な運用ルール
    1. 具体的な運用ガイドライン
  10. どの対策を選ぶべきか? ― フローチャート
  11. まとめ

「テキストタブで一生懸命コードを書いたのに、ビジュアルタブに切り替えたら全部崩れた……」

WordPressのクラシックエディターを使っていて、こんな絶望的な経験をしたことはありませんか?

ブロックエディター(Gutenberg)が主流になった今でも、クラシックエディターを愛用している方は少なくありません。使い慣れたインターフェースの方が執筆スピードが出るという方、既存サイトの運用で変更が難しいという方、さまざまな理由があるでしょう。

しかし、クラシックエディターには昔からある「困った仕様」が存在します。それが、テキストタブ(コードエディター)で入力したHTMLが、ビジュアルタブに切り替えた瞬間に勝手に書き換えられてしまうという問題です。

この記事では、この問題がなぜ起きるのかを詳しく解説し、確実に防ぐための7つの対策を紹介します。「もう二度とコードを壊されたくない!」という方は、ぜひ最後まで読んでみてください。

この記事の結論

HTMLが崩れる原因はTinyMCEの自動整形WordPressのwpautop関数の二重処理です。最も確実な対策は「TinyMCE設定の変更(functions.php)+ Syntax Highlighterプラグイン + ビジュアルタブに切り替えない運用ルール」の3点セットです。

クラシックエディターのテキストタブとビジュアルタブの切替ボタン

そもそも何が起きているのか? ― 症状の具体例

テキストタブで書いたHTMLがビジュアルタブへの切替時に「空タグの削除」「pタグの自動変換」「HTMLエンティティのデコード」「インラインスタイルの改変」「改行・インデントの消滅」という5種類の崩れを起こします。

まずは「何が崩れるのか」を具体的に見てみましょう。テキストタブで以下のようなHTMLを入力したとします。

症状1: 空のタグが削除される

テキストタブで入力したコード:

ビジュアルタブに切り替えて戻すと:

中身が空のタグは「不要」と判断されて、丸ごと削除されてしまいます。CSSでスペーサーやアンカーとして使っていた場合、レイアウトが完全に崩壊します。

テキストタブで空divを入力後、ビジュアル切替でタグが消えている比較画面

症状2: pタグとbrタグの自動変換

テキストタブで入力したコード:

ビジュアルタブ経由で戻ると、余分な改行が入ったり、逆にpタグが統合されたりすることがあります。wpautop関数による自動整形が絡み合い、意図しない段落構造に変わってしまうのです。

症状3: HTMLエンティティがデコードされる

テキストタブで入力したコード:

ビジュアルタブ経由で戻ると:

記事中にコードスニペットを「表示」するためにエスケープしていたエンティティが、実際のHTMLタグとしてデコードされてしまいます。これは技術ブログを書いている方にとっては致命的な問題です。

エスケープされたdivタグがビジュアル切替後にHTML要素として解釈されてしまう比較画面

症状4: インラインスタイルの改変

テキストタブで入力したコード:

ビジュアルタブ経由で戻ると、styleの記述が短縮・変更されたり、一部のプロパティが削除されたりすることがあります。

CSSとキャッシュの問題については「WordPressでCSS更新が反映されない|キャッシュ5層の切り分け」も参考になります

症状5: コードがminify化される(改行・スペースの消滅)

テキストタブで見やすく整形して書いたコード:

ビジュアルタブに切り替えてテキストタブに戻すと:

すべてが1行にまとめられ、まるでminifyツールを通したかのような状態になります。TinyMCEはHTMLをDOM(文書オブジェクトモデル)として解析する際に、タグ間の改行やインデントを「不要な空白」として除去してしまうのです。

コードの内容自体は変わっていないため表示上は問題ありませんが、後から記事を修正しようとしたときに非常に読みづらく、編集効率が大幅に低下します。特にテーブルや複雑なレイアウトを含む記事では、元の構造を把握するのが困難になります。

ポイント: これらの症状は1回の切り替えでは目立たないこともありますが、何度もテキスト⇔ビジュアルを行き来すると、どんどん蓄積して元のコードとはまったく違うものになっていきます。

なぜ崩れるのか? ― TinyMCEの自動整形の仕組み

原因は、ビジュアルタブ内部で動作する「TinyMCE」エディターの自動正規化処理と、WordPress本体の「wpautop」関数による自動pタグ挿入が、切替のたびに二重に掛かることです。

クラシックエディターのビジュアルタブは、内部で「TinyMCE」というWYSIWYGエディターを使用しています。TinyMCEはHTMLをリアルタイムで編集できる優れたライブラリですが、ビジュアルタブに切り替える際にHTMLを「正規化」する処理が走ります。

TinyMCEが行う自動処理の一覧

処理内容 具体例 影響
空タグの除去 空の<div>、<span>を削除 レイアウト崩壊
HTMLエンティティのデコード &lt; → <、&amp; → & コード表示が壊れる
不正HTMLの自動修正 閉じタグの補完・移動 構造が変わる
pタグの自動挿入 テキストにpタグを自動付与 余分な余白
brタグの変換 改行をbrに変換、または除去 改行位置がずれる
属性の正規化 style属性の短縮・削除 デザインが変わる
改行・インデントの除去 整形されたHTMLが1行に圧縮 コードが読めなくなる
switchEditorsによるHTML変換 切替時にJS側で独自整形 TinyMCE設定では防げない

さらに、WordPress本体にも「wpautop」という関数があり、これが保存時にpタグやbrタグを自動挿入します。TinyMCEの処理とwpautopの処理が二重に掛かることで、HTML構造がどんどん崩れていくのです。

崩れが発生するタイミング

具体的には、以下のフローで崩れが発生します:

① テキストタブでHTMLを入力



② ビジュアルタブに切り替え → switchEditors.wpautop()がpタグを自動挿入 → TinyMCEがHTMLを解析・正規化



③ テキストタブに戻す → switchEditors._wp_Nop()がHTMLを整理・minify化 → TinyMCEが再度HTMLを出力



④ 保存 → wpautopが<p>タグを自動挿入

つまり、②の時点ですでにHTMLが書き換わっており、テキストタブに戻しても「元のコード」には戻らないのです。特にminify化(改行の消滅)は③のswitchEditors._wp_Nop()で発生するため、TinyMCEの設定だけでは防げないケースがあります。

注意: 一度ビジュアルタブに切り替えてしまうと、それだけでHTMLが変更されます。保存していなくても、切り替えた時点でアウトです。

テキスト→ビジュアル→テキストの切替フロー図。各段階でHTMLが書き換わる様子を示す

【対策①】TinyMCEの自動整形を無効化する(functions.php)

functions.phpにTinyMCEの設定パラメータを追加し、自動pタグ挿入・改行削除・空タグ除去・HTML検証・minify化をすべて無効化します。さらにswitchEditorsのJS処理もパススルーにすることで、切替時のHTML変換を完全にスキップできます。

最も直接的な対策は、TinyMCEの自動整形そのものをオフにすることです。テーマのfunctions.phpに以下のコードを追加します。

各パラメータの解説

wpautop: TinyMCE内での自動段落挿入を制御します。falseにすることで、テキストタブで書いたpタグ構造がそのまま維持されます。

remove_linebreaks: HTMLソースから不要と判断された改行を削除する機能です。falseにすると、テキストタブで入れた改行がそのまま保持されます。

remove_redundant_brs: 連続する<br>タグを「冗長」として削除する機能です。意図的にbrを入れている場合、falseにしておかないと消えてしまいます。

verify_html: HTMLの妥当性チェックと自動修正を行う機能です。falseにすることで、空タグの削除や閉じタグの自動補完が抑制されます。

minify化(改行・スペースの消滅)を防ぐ追加設定

上記の4つのパラメータだけでは、ビジュアルタブに切り替えた際にHTMLがminifyされたように改行やインデント(スペース)がすべて除去されてしまうことがあります。これはTinyMCEがHTMLをDOM(文書オブジェクトモデル)として解析する際に、タグ間の空白テキストノードを「不要」と判断して削除するためです。

テキストタブで見やすく整形して書いたコードが、ビジュアルタブ経由で1行にまとめられてしまうと、後から編集するときに非常に読みづらくなります。

この問題を防ぐために、上記コードには以下の3つのパラメータも含めています:

indent: TinyMCEのHTMLシリアライザ(出力エンジン)が、タグ間に改行とインデントを挿入するようになります。trueにすることで、minify化されたコードに改行が復元されます。

indent_before: 指定した要素の開始タグの前に改行を挿入します。p、div、table、liなど、ブロックレベル要素を網羅的に指定しておくのがポイントです。

indent_after: 指定した要素の閉じタグの後に改行を挿入します。indent_beforeとセットで指定することで、要素ごとに改行が入った読みやすいHTMLが維持されます。

注意: indent設定はTinyMCEの「出力時」に改行を付与するものです。元のインデント構造(スペースの数やネストの深さ)が100%復元されるわけではなく、TinyMCE独自のルールで再整形されます。完璧な保持が必要な場合は、対策⑦(ビジュアルタブに切り替えない)と組み合わせてください。

それでもminify化が解消しない場合 ― switchEditorsの無効化

上記のindent設定を追加してもminify化が解消しない場合があります。これは、TinyMCEの設定とは別のレイヤーでHTMLが処理されているためです。

WordPressには switchEditors というJavaScriptオブジェクトが組み込まれており、テキスト⇔ビジュアルの切替時に独自のHTML変換処理を行っています。具体的には以下の2つの関数です:

switchEditors.wpautop():テキスト→ビジュアル切替時にpタグを自動挿入する関数です。

switchEditors._wp_Nop():ビジュアル→テキスト切替時にHTMLを整理する関数です。minify化はここで発生します

functions.phpの tiny_mce_before_init フィルターはTinyMCEエンジンの設定を変えるだけで、この switchEditors のJavaScript処理には影響しません。つまり、TinyMCE以前の段階で改行が消されているのです。

この問題を解決するには、functions.phpに以下のコードを追加します。先ほどの disable_tinymce_auto_formatting はそのまま残し、追加で記述してください:

この方法で switchEditors の2つの関数をパススルー(入力をそのまま返す)に差し替えるため、切替時のHTML変換処理が完全にスキップされます。

switchEditors無効化の副作用を詳しく理解する

switchEditorsを無効化する前に、この変更が何に影響するのかを正確に理解しておきましょう。

■ 通常の動作(switchEditorsが有効な場合)

ビジュアルタブで以下のように改行しながら文章を書いたとします:

テキストタブに切り替えると、switchEditors.wpautop() が自動的に変換してくれます:

逆にテキストタブからビジュアルタブに戻すときは、switchEditors._wp_Nop()<p> タグを取り除いてビジュアルエディター上で自然な表示にしてくれます。

つまり、この2つの関数はビジュアルタブとテキストタブの「翻訳者」のような役割を担っています。

■ switchEditorsを無効化した場合

パススルーにした状態でビジュアルタブで同じように書くと、テキストタブに切り替えても:

<p> タグが付きません。この状態で保存すると、フロントエンド(実際のサイト表示)ではwpautop関数が有効であれば段落に変換されるので表示上は問題ないケースが多いです。

ただし、対策②でwpautopも無効化している場合は、改行がただの空白として扱われ、フロントエンドでは全文が1つの塊として表示されてしまいます。

■ 具体的に困るケース

ケース1:ビジュアルタブとテキストタブを行き来する執筆スタイルの方

ビジュアルタブで書いた段落がテキストタブ側で <p> タグに変換されないため、テキストタブで見たときに「どこが段落の区切りなのか」が分かりづらくなります。テキストタブ側で追加のHTML編集をする際に混乱しやすくなります。

ケース2:wpautop(対策②)も同時に無効化している方

翻訳者(switchEditors)も自動段落(wpautop)も両方オフにしている状態なので、ビジュアルタブで改行しただけでは段落にならず、自分で <p> タグを書く必要があります。

ケース3:複数人で記事を編集するサイト

他のライターがビジュアルタブで普通に執筆している場合、その方の記事の段落構造が壊れる可能性があります。switchEditorsの無効化はサイト全体に影響するため、自分だけの問題では済みません。

■ 誰に影響があって、誰に影響がないか

執筆スタイル 影響
テキストタブのみで執筆

(自分で<p>タグを書く)
影響なし ― そもそもswitchEditorsの変換に頼っていない
ビジュアルタブのみで執筆

+ wpautop有効
ほぼ影響なし ― フロントエンドではwpautopが段落を生成してくれる
ビジュアルタブのみで執筆

+ wpautop無効
影響あり ― 段落が生成されない
テキスト⇔ビジュアルを

頻繁に切り替える
影響あり ― テキストタブ側で段落構造が見えなくなる
複数ライターのサイト 要注意 ― 他のライターの執筆にも影響が出る
判断基準: テキストタブ主体で自分だけが執筆するサイトなら、switchEditorsの無効化はデメリットがほぼありません。ビジュアルタブを多用する方や複数ライターがいるサイトでは、switchEditorsは無効化せず、対策③(プラグイン)や対策⑦(運用ルール)で対処するのが安全です。
対策①のまとめ: minify化を確実に防ぐには、TinyMCE設定(indent系パラメータ)switchEditorsの無効化の両方を組み合わせるのがベストです。どちらか一方だけでは、別々のレイヤーで改行が消されてしまいます。
注意: verify_htmlをfalseにすると、不正なHTMLがそのまま保存される可能性があります。HTMLに自信がある方向けの設定です。
子テーマを使おう: functions.phpを編集する場合は、必ず子テーマを使いましょう。親テーマを直接編集すると、テーマ更新時にカスタマイズが消えてしまいます。

functions.phpにTinyMCE設定のコードを追加している画面

【対策②】wpautopフィルターを無効化する

WordPress本体のwpautop関数を無効化することで、保存時の自動pタグ挿入を止められます。既存記事への影響が心配な場合は、カスタムフィールドで投稿ごとに選択的に無効化する方法がおすすめです。

WordPressには「wpautop」という関数があり、投稿の表示時にテキストを自動的にpタグで囲みます。これはTinyMCEとは別の処理で、保存後の表示段階で実行されます。

対策①と組み合わせることで、より確実にHTML構造を保護できます。

wpautopを無効化する際の注意点

wpautopを無効化すると、すべての投稿・固定ページで自動段落分けが効かなくなります。つまり、今まで改行だけで書いていた記事のpタグが付かなくなり、表示が崩れる可能性があります。

そのため、既存の記事が多いサイトでは安易に無効化せず、以下のような選択的な方法を検討してください。

特定の投稿だけwpautopを無効化する方法

この方法なら、HTMLを厳密に管理したい投稿だけ選択的にwpautopを無効化できます。投稿編集画面のカスタムフィールドで「disable_wpautop」を「1」に設定するだけでOKです。

投稿編集画面のカスタムフィールドで disable_wpautop を設定している画面

【対策③】プラグインで対処する

コードを書きたくない方には「Advanced Editor Tools」プラグインがおすすめです。「パラグラフタグを保持」オプションを有効にするだけで、pタグ・brタグの自動変換を抑制できます。

Advanced Editor Tools(旧:TinyMCE Advanced)【おすすめ】

現在最も現実的なプラグイン対策がこのAdvanced Editor Toolsです。70万以上のサイトで有効化されており、定期的にアップデートされている信頼性の高いプラグインです。

このプラグインの「上級者向け設定」セクションに「クラシックブロックとクラシックエディター内のパラグラフタグを保持」というオプションがあり、テキストタブとビジュアルタブの切替時にpタグやbrタグが自動変換されるのを抑制できます。

設定方法:

① WordPress管理画面 → 設定 → Advanced Editor Tools を開く

② 画面を下にスクロールし「上級者向け設定」セクションを見つける

③ 「クラシックブロックとクラシックエディター内のパラグラフタグを保持」にチェックを入れる

④ 「変更を保存」をクリック

Advanced Editor Toolsの上級者向け設定画面でパラグラフタグを保持オプションにチェックを入れた状態

この設定を有効にすると、クラシックエディターで <p> タグと <br> タグが自動的に除去されなくなり、テキストタブにこれらのタグがそのまま表示されます。また、テキストエディターの自動補完が停止され、より高度なHTML編集が可能になります。

注意: このオプションを有効にすると、テキストエディター内での改行がそのまま出力に含まれるようになります。そのため、空の行やHTMLタグ内の改行、連続する複数の<br>タグは使用しないでください。また、まれに予想できない動作をする場合があるため、常用前に十分テストを行ってください。

さらに、画面最下部の「管理」セクションで以下のオプションもチェックしておくと、クラシックエディター全体でAdvanced Editor Toolsの設定が適用されます:

☑ 旧エディター(投稿と固定ページの新規追加と編集)

☑ wp-adminのクラシック(TinyMCE)エディターの他のインスタンス

Advanced Editor Toolsの管理セクションで旧エディターオプションにチェックを入れた状態

Advanced Editor Toolsにはそのほか、ビジュアルエディターのツールバーボタンのカスタマイズ、テーブルの詳細設定(セル結合・背景色・リサイズなど)、フォントファミリー・フォントサイズの選択ボタン、リストスタイルオプション(順序付きリストの記号変更など)といった便利な機能も含まれています。

インストール方法: WordPress管理画面 → プラグイン → 新規追加 → 「Advanced Editor Tools」で検索 → インストール → 有効化。有効化後、設定 → Advanced Editor Tools で詳細設定が可能です。

プラグイン新規追加画面で「Advanced Editor Tools」を検索した結果

注意: 「パラグラフタグを保持」は万能ではありません。pタグ・brタグの保持には効果がありますが、空タグの削除やHTMLエンティティのデコード、minify化など、すべての症状を完全に防げるわけではありません。より確実な対策が必要な場合は、対策①(functions.php)と組み合わせてください。

Preserved HTML Editor Markup Plus(開発終了)

開発終了: このプラグインは2019年12月を最後に更新が停止されており、WordPress.orgでも「放棄されたプラグイン」として扱われています。WordPress 5.3までしかテストされておらず、最新のWordPressでは互換性の問題が発生する可能性があります。新規インストールは推奨しません。

かつてはHTML保護の定番プラグインでした。テキストタブで入力したHTMLマークアップがビジュアルタブへの切替時に変更されるのを防ぐ目的で開発され、空タグの削除防止やwpautopの制御など、この記事で扱っている問題にぴったりの機能を持っていました。

現在このプラグインを使用中のサイトでは、Advanced Editor Tools への移行(「パラグラフタグを保持」オプションが代替になる)、対策①(functions.php)への移行(プラグインに依存しない方法)、またはその両方を組み合わせて、プラグイン削除後も同等の保護を確保することを検討してください。

Raw HTML Pro

記事の特定の部分だけTinyMCEの処理から保護したい場合に便利なプラグインです。専用のタグで囲んだ部分のHTMLがそのまま保持されます。

サイト全体の設定を変えたくないが、特定の投稿や特定のHTML部分だけ確実に保護したいという場合に重宝します。

【対策④】ショートコードでコード部分を保護する

記事中にHTMLコードを「表示」したい場合、自作のショートコードで囲むことでTinyMCEの処理対象から外し、HTMLエンティティのデコードを防げます。技術ブログでコードスニペットを掲載する方に有効です。

使い方

テキストタブで以下のように入力します。

ショートコード内のHTMLは、ビジュアルタブに切り替えても安全に保持されます。表示時にesc_html()でエスケープされるため、HTMLタグがそのまま「コード」として表示されます。

ショートコードの拡張:言語指定に対応する

これでCSSでの言語別スタイリングや、Prism.jsなどのシンタックスハイライトとの連携も可能になります。

ショートコードを使ってコードを表示した記事のテキストタブ画面

ショートコードを使ってコードを表示した記事のフロントエンドでのプレビュー画面

【対策⑤】Syntax Highlighterプラグインを使う

技術記事でコードスニペットを多用する場合、シンタックスハイライターの導入が最もスマートな解決策です。専用ブロックやショートコードで管理されるため、TinyMCEの自動整形の影響を一切受けません。

おすすめプラグイン

Highlighting Code Block:日本製のプラグインで、ブロックエディターとクラシックエディターの両方に対応しています。Prism.jsベースで軽量、テーマカスタマイズも可能です。

Enlighter:TinyMCEへの統合が優秀で、クラシックエディターでの利用に特に適しています。ビジュアルエディター上で直接コードブロックを挿入でき、専用のボタンがツールバーに追加されます。

SyntaxHighlighter Evolved:WordPress.comでも使われている実績のあるプラグインです。ショートコードベースなので、クラシックエディターとの相性が抜群です。

いずれのプラグインも、コード部分を専用フォーマットで管理するため、ビジュアル⇔テキスト切替でコードが崩れる心配がありません。

Highlighting Code Blockプラグインでコードブロックを挿入した編集画面

図.編集画面

Highlighting Code Blockプラグインでコードブロックを挿入したフロントエンドでの表示

図.フロントエンド画面

【対策⑥】カスタムHTMLブロック(ハイブリッド運用)

Classic Editorプラグインの設定でエディター切替を許可し、HTMLを厳密に管理したい記事だけブロックエディターの「カスタムHTMLブロック」を使う方法です。カスタムHTMLブロック内のHTMLは一切の自動整形を受けません。

「基本はクラシックエディターを使いたいけど、一部だけHTMLを厳密に管理したい」という場合、ハイブリッド運用が有効です。

Classic Editorプラグインの設定で「すべてのユーザーのデフォルトエディター」を「クラシックエディター」にしつつ、「ユーザーにエディターの切り替えを許可」を「はい」にします。

これにより、基本的にはクラシックエディターで執筆しつつ、HTMLを厳密に管理したい記事だけブロックエディターに切り替えて「カスタムHTML」ブロックを使うことができます。

Classic Editorプラグインの設定画面でエディター切替を許可に設定した状態

【対策⑦】最も確実な運用ルール

最も確実な方法は「テキストタブで編集を始めたら、その記事ではビジュアルタブに切り替えない」というルールを徹底することです。見た目の確認はビジュアルタブではなく「プレビュー」ボタンを使いましょう。

正直なところ、TinyMCEの自動整形はビジュアルタブに切り替えた瞬間にトリガーされるため、切り替えなければ崩れようがありません。

具体的な運用ガイドライン

① 記事の種類で使い分ける:HTMLをほとんど使わない記事はビジュアルタブのみで執筆。カスタムHTMLが多い記事はテキストタブのみで執筆。

② プレビューで確認する:テキストタブで執筆中に見た目を確認したい場合は、ビジュアルタブに切り替えるのではなく「プレビュー」ボタンを使います。プレビューはTinyMCEを経由しないため、HTMLが崩れません。

③ バックアップの習慣:テキストタブで複雑なHTMLを書く場合は、コードをテキストエディタにコピーしてバックアップを取ってから保存する習慣をつけましょう。

プレビューを活用しよう: ビジュアルタブの代わりに「プレビュー」ボタンを使えば、HTMLを崩さずに見た目の確認ができます。これが最もリスクの少ない確認方法です。

投稿編集画面の「プレビュー」ボタンの位置を示す画面

どの対策を選ぶべきか? ― フローチャート

functions.phpの編集に抵抗がなく技術ブログを運営しているなら「対策① + 対策⑤ + 対策⑦」の3点セットが王道です。コードを書きたくない方は「対策③(プラグイン)+ 対策⑦(運用ルール)」の組み合わせが最も手軽です。

7つの対策を紹介しましたが、どれを選べばいいか迷う方のために、判断フローチャートを用意しました。

対策選びフローチャート

Q1. functions.phpの編集に抵抗はありますか?

→ はい → 対策③(プラグイン)または対策⑤(Syntax Highlighter)

→ いいえ → Q2へ

Q2. 既存の記事が多く、表示への影響が心配ですか?

→ はい → 対策①(TinyMCE設定のみ)+ 対策⑦(運用ルール)

→ いいえ → Q3へ

Q3. 技術ブログでコードスニペットを多用しますか?

→ はい → 対策⑤(Syntax Highlighter)+ 対策①(TinyMCE設定)

→ いいえ → 対策① + 対策② + 対策⑦(フルセット)

まとめ

クラシックエディターのHTML崩れは「TinyMCEの自動整形」と「wpautop関数」の二重処理が原因です。対策①(TinyMCE設定)+ 対策⑤(Syntax Highlighter)+ 対策⑦(運用ルール)の3点セットが、バランスよく対処できる王道パターンです。

この記事で紹介した7つの対策をまとめると:

対策 方法 難易度 おすすめ度
TinyMCE設定の変更 ★★☆ ★★★
wpautopの無効化 ★★☆ ★★☆
プラグインで対処 ★☆☆ ★★★
ショートコードで保護 ★★☆ ★★☆
Syntax Highlighter ★☆☆ ★★★
ハイブリッド運用 ★☆☆ ★★☆
運用ルールの徹底 ★☆☆ ★★★

ブロックエディターが主流の時代とはいえ、クラシックエディターには独自の良さがあります。この記事の対策を活用して、快適なクラシックエディター生活を送ってください。

WordPress
この記事を書いた人
rapls

Web開発歴6年以上のフリーランスエンジニア。WordPressプラグイン開発とAIツール活用が専門。「現場で本当に役立つ情報」をモットーに、開発で遭遇したトラブルと解決策を発信しています。

raplsをフォローする
raplsをフォローする

コメント

タイトルとURLをコピーしました