ワードプレス

WordPressの編集画面で、ある特定の文字列を記述すると自動で変換される機能が働きます。
今回はこの変換処理を無効化する方法を解説します。

自動変換の例

例えば文中にハイフン「-」を含む文字列があると、WordPressはその文字をエンダッシュ「–」に変換して出力します。
また「&」と記述すると「#038;」に変換されますし、シングルクォートやダブルクォートも「“」や「”」などに自動で変換されてしまします。
微妙な違いですが実はコレが意外と厄介なんです。

ちなみに WordPress Codex では、元のテキストと変換後のテキストが表で紹介されていました。

元のテキスト 変換されたテキスト シンボル名
“—“ “—” em ダッシュ
” — “ “—” em ダッシュ
“–“ “–” en ダッシュ
” – “ “–” en ダッシュ
“…” “…” 省略記号
開始引用符
“hello “hello 開始引用符
‘hello ‘hello 開始引用符
終了引用符
world.” world.” 終了引用符
world.’ world.’ 終了引用符
” ™” ” ™” 商標記号
1234″ 1234″ ダブルプライム記号
1234′ 1234′ プライム記号
’99 ’99 西暦の省略表現前のアポストロフィ
Webster’s Webster’s アポストロフィ
1234×1234 1234×1234 乗算記号

おそらく WordPress の開発者の方々が「このほうが親切だろう」と考えて実装したんだろうと思いますが、プログラマーの感覚からすると『余計なお世話』的な機能なんですよね。

自動変換を司る2つの関数

この自動変換はWordPressのデフォルトの機能で「wptexturize」と「convert_chars」という2つの関数が司っています。

場所は「/wp-includes/formatting.php」の中にありますね。

実際にコードを読んでみると、上記の表で紹介した以外にもたくさんの文字が変換されていることが分かります。

自動変換を無効化する方法

この「余計なお世話」的な機能を無効化する方法ですが、テーマファイルの「functions.php」に以下のコードを記述すれば一発で解決します。

add_filter( 'run_wptexturize', '__return_false' );

この「run_wptexturize」はワードプレスのバージョン「4.0.0」以降から実装された新しい関数です。
旧来の方法では「remove_filter」を使って細かく指定していくことになります。

remove_filter('the_title', 'wptexturize');
remove_filter('the_content', 'wptexturize');
remove_filter('the_excerpt', 'wptexturize');
remove_filter('comment_text', 'wptexturize');
remove_filter('the_title'  , 'convert_chars');
remove_filter('the_content', 'convert_chars');
remove_filter('the_excerpt', 'convert_chars');
remove_filter('comment_text', 'convert_chars');

当然「remove_filter」ではなく「run_wptexturize」の使用をお勧めします。

入力した文字が勝手に変換されてお困りのときはぜひお試しください。