1. 問題:「--」が勝手に「–」に変わってしまっていた
シェルスクリプトの記事を書く中で、投稿ページには「--」と書いていたのに公開された記事を確認したら「–」と表示されてしまっていた。
確かに「--」と入力していた
WordPress の投稿ページではきちんと「--」になっていました。

公開された記事には「–」と反映
ところが、実際に公開されたページをみてみると下記の通り。

なぜか変わってしまっている。
2. 原因:wptexturize による文字変換
調べてみると、WordPress の「wp-includes」フォルダ内「formatting.php」というファイルに記述されている関数「wptexturize()」が原因でした。
この関数はテキストを自動的に変換する機能で、例えばふつうの引用符をスマート引用符へ変えたり、特定の記号の並びをアポストロフィ、ダッシュ、省略符号(…)、商標記号、乗算記号などへ変えたり等、通常便利であろう変換を行うものです。
下の表はその自動変換がされる一例です。
元のテキスト | 変換されたテキスト | シンボル名 |
"---" | "—" | em ダッシュ |
" -- " | "—" | em ダッシュ |
"--" | "–" | en ダッシュ |
" - " | "–" | en ダッシュ |
"..." | "…" | 省略記号 |
`` | “ | 開始引用符 |
"hello | “hello | 開始引用符 |
'hello | ‘hello | 開始引用符 |
'' | ” | 終了引用符 |
world." | world.” | 終了引用符 |
world.' | world.’ | 終了引用符 |
" (tm)" | " ™" | 商標記号 |
1234" | 1234″ | ダブルプライム記号 |
1234' | 1234′ | プライム記号 |
'99 | ’99 | 西暦の省略表現前のアポストロフィ |
Webster's | Webster’s | アポストロフィ |
1234x1234 | 1234×1234 | 乗算記号 |
3. 解決法:remove_filter()
ということですが、remove_filter() 関数を使ってこの自動変換(wptexturize)を止めることができる様なので、早速 function.php の一番下に下記コードを貼り付けます。
/*wptexturize 無効化*/ remove_filter( 'the_content', 'wptexturize' );
すると下の画像の通り、投稿ページで入力した通りの表記(--)が反映されました。

4. さらにもう一行
この時点で投稿内容では自動変換が止まりましたが、記事タイトル等に関してはまだ変換が行われる状態なので、もう一行追加します。
/*wptexturize 無効化*/ remove_filter( 'the_content', 'wptexturize' ); remove_filter( 'the_title', 'wptexturize' );
一行目の「the_content」の部分を「the_title」に変えただけです。これで記事タイトルに対しても自動変換がされなくなりました。