WordPressテックラボ

記事の自動整形や記号などの変換を止める

※2011/8/8の記事をベースに改編しました

WordPressの投稿編集ページには、ビジュアルエディタとテキストエディタの2種類が用意されています。ビジュアルエディタはHTMLを理解していなくても利用できるように出力結果に近い見た目で編集できるようになっており、テキストエディタはHTMLを自分で書けるようになっています。

テキストエディタの場合でも、WordPressは自動整形を行って改行をBRタグに変換したり、インラインタグや文章をPタグで囲むので、ユーザは太字やリストといった特殊な飾り付けをしたい場合を除いて、HTMLを意識しないでも書けるようになっています。
これはこれで便利ですが、自動整形のクオリティが低くかったり、記号などを勝手に変換してしまうといった問題があります。

BRやPの自動整形のクオリティが低いのは最悪見た目に影響があるぐらいですが、記号の変換の場合は意図しない文章となってしまうため、プログラムソースの解説などでは見過ごせない問題が発生します。

この改行や段落、記号の自動変換をしているのは次のWordPress関数です。

  • wpautop関数
    改行をBRタグやPタグに変換したり、インラインタグや文章はタグを適用します。
  • wptexturize関数
    特定の記号を別の文字に変換したり、ダブルクォートやシングルクォートを実体参照に変換します。

これらの変換はremove_filterという関数を使って無効にすることができます。

wpautop関数を無効にするには、functions.phpに次の行を追加します。

/* wpautop関数(自動整形)を無効にする */
// 記事タイトル
remove_filter('the_title', 'wpautop'); 
// 本文
remove_filter('the_content', 'wpautop'); 
// コメント欄
remove_filter('comment_text', 'wpautop');
// 抜粋 
remove_filter('the_excerpt', 'wpautop'); 
wptexturize関数を無効にするには、functions.phpに次の行を追加します。
/* wptexturize関数(特定の記号などを変換)を無効にする */
// 記事タイトル
remove_filter('the_title', 'wptexturize');
// 本文
remove_filter('the_content', 'wptexturize');
// コメント欄
remove_filter('comment_text', 'wptexturize'); 
// 抜粋
remove_filter('the_excerpt', 'wptexturize'); 

関連記事