WordPressのハイフン連結を無効化する

先日、こちらの記事に「コマンドのオプションで使用する2連ハイフンが連結されて一つのハイフン(エンダッシュというらしい)になってしまっている」というご指摘をコメントにていただきました。

で、確認したところ、なるほど確かに2連ハイフンが一つのバー(エンダッシュ)に置き換えられていました。どうやらこれはWordPress自身が持つ機能らしいので、これをどうにかすべく調査開始。

調べてみたところ、その機能はwptexturize()という関数で提供されていることが判明しました。
そしてこの機能への対処方法(つまり無効化する方法)としては

  1. ハイフンではなくその文字記号「&$45;」(実際の入力は半角で!)を使う
  2. HTMLの<Pre>タグを使う
  3. wptexturize()関数を無効化する

という方法があちこちで紹介されていました。
で一通り試してみたわけですが、結論から言うと残念ながらうちの環境ではどれもうまく行きませんでした(2の方法は試してません)。
それが関係しているかはわかりませんが、1の方法だとビジュアルモードでうまくいかないらしく、うちでもうまく機能しませんでした。そして3の方法はというと、こちらも結局のところ該当する無効化のコマンドを既定のファイル(functions.php)に書き足したものの、書き足す以前と挙動が全く変わらず。

事前にきちんと調べ、phpの先頭に必要なコマンドを書き入れたんですけどね〜・・・。それでも不安に思ってさらに調べ、ここをにあるのと全く同様に書き入れてあることも確認したのにダメだったのでした。

しかしそのままでは気持ち悪いので、さらにしつこく調査を続けます。すると、上記3の方法に似たやり方で、それとは違う方法があることがわかりました。
上記3の方法では、functions.phpの先頭にremove_filter()という関数を記入したのですが、これは同じ場所にremove_filter()ではなく、add_filter()という関数を入れるのです。
詳細はリンク先をご確認いただくとして、抜粋すると、functions.phpの先頭に

add_filter( ‘run_wptexturize’, ‘__return_false’ );

という関数を記入します。
3の方法だとこのwptexturize()関数を無効にするためにremove_filter()関数を使ったのですが、そうではなくて戻り値を偽にさせることで結果的にwptexturize()関数を無効にしよう、ということのようです。

で、結論ですが、この方法でうまくハイフン連結を無効にすることができました。

ほら、こんな具合に!
——
ちゃんとハイフンが連なっているのが確認できます(^ ^)

というわけで、無事に問題解決となりました!

boota

いろんなモノに、いろんな意味で、ヲタ。なのかも?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)