開発ブログ

WWWクリエイターズが送る、Git、CSS、HTML、コマンドライン、Macの便利機能など、開発に関する役立ち情報発信します。気まぐれに更新。

WordPressで本文の自動整形をオフにする方法まとめ。

最終更新:2016-12-03 by Joe

ワードプレスの記事編集画面には、特有の「クセ」があります。投稿の本文を、美しく(?)HTMLに出力するために、入力されたテキストに対して自動でHTMLタグを補完する機能があるからです。

もっとも目立つHTML整形機能が「Pタグの補完」です。これは「HTML出力時に、本文の改行(文字コード:\n)をPタグ(<p>xxx</p>)に補完する、という機能です。

これによりHTMLが乱れる事がありますので、これをオフにする機能を紹介します。

そのテンプレートだけ自動整形をオフにする。

所望のテンプレートファイルに通常、以下のような「本文を出力する」関数がありますが、

これをこのように置き換えます。

これでOKです。

なぜ?

一応補足すると、ワードプレスの自動整形機能はすべて「wpautop()」という関数(フィルター関数)で処理されます。このフィルターはthe_content()には含まれていますが、get_the_content()はフィルターを介さず、データベースに保存された文字列を取得する関数ですので、自動整形が行われない、というだけです。

the_content()関数の中身ですが、apply_filters()が事前に登録されたフィルター関数を$contentに対して実行する部分です。この中に問題(?)のwpautop()が含まれます。

参考:
http://wpdocs.osdn.jp/関数リファレンス/wpautop
http://wpdocs.osdn.jp/テンプレートタグ/the_content
http://wpdocs.osdn.jp/テンプレートタグ/get_the_content

「固定ページ」でだけ自動整形をオフにする

特定のタイミング、特定の条件で、上記で言及した「autopフィルター」を外します。

これをどこに記述するかはあなた次第です。
固定ページテンプレートであれば、page.phpの戦闘にかいてもいいでしょう。
もしくはfunction.phpないで、条件分岐を実装できます。

あらゆる投稿で自動整形をすべてオフにする

functions.phpで、以下を実行します。