WordPress記事内で連続するハイフンが繋がってしまう件。自動変換の関数を停止させることで回避する方法

WordPressの記事で連続するハイフンが繋がってしまう

こんにちは、星影です。
WordPressを使い始めて1年以上が経ちましたが、まだまだ知らないことが出てきます。

以下の記事にて、コマンドオプションの言及をするために連続するハイフン「--」を記述しました。

VirtualBoxの仮想ディスクを固定サイズから可変サイズへ変換。コマンドでディスク容量を拡張する方法 | Time to live forever

ところが実際に記事ページを見ると、連続するハイフンがひとつに繋がって表示「—」されてしまうという現象に遭遇しました。

調べてみたところ、どうやらこれはWordPressの仕様で、記事に出力する際に特定の記号が自動変換がされてしまうということがわかりました。本記事では特定の記号を自動変換するWordPress関数と、それを停止するための方法についてご紹介します。

自動変換しているのは wptexturize()

連続するハイフンがひとつに繋がって表示されてしまうのは、wptexturize() という関数が原因でした。wptexturize()は、テキスト内の引用符、アポストロフィ、ダッシュ、省略記号、商標記号、および乗算記号を最適な形に自動変換する関数です。

実際に対象となる記号は以下のとおりです。

スクリーンショット 2013-09-30 16.01.55

これを見ると、連続するハイフンは、emダッシュに変換されるということがわかります。

Function Reference/wptexturize « WordPress Codex

wptexturize() による自動変換を回避する方法

さて、原因となる関数がわかったところで、今回はこの関数による自動変換を回避する方法も調べてみました。記事内で対応する方法と、関数の使用を停止させる方法の2種類がありました。

記事内で対応する方法

ググってみると、<pre>タグを使ったり、ハイフンの文字参照である「&#45;」を使うことで回避する方法が出てきました。

今さら聞けない、WordPressの記事で連続するハイフンが繋がってしまうんですが | ローカルブロガーのメモ帳

ここでは<pre>タグが紹介されていますがCodexを見ると、<pre>タグ以外でもwptexturize() による自動変換を回避できるタグはあるようですね。

しかしながら、前述したとおり自動変換される記号は連続するハイフンだけではありません。それぞれの文字参照を覚えたり、自動変換されてしまった記号を含むテキストを毎回タグで囲うなどというのは非常に面倒です。

関数の使用を停止させる方法

wptexturize()の変換対象になっている記号は、コマンドオプションやコードを記載する際に使う可能性があります。Codexを見たところ、個人的には自動変換の恩恵がなさそうなので、wptexturize()による自動変換を停止させることにしました。

functions.php に関数除去フィルターを追加する

functions.php にremove_filter()を追加することで、指定した関数の使用を停止させることができます。引数には、除去する関数がフックしているアクションフック、除去する関数名(今回はwptexturize)を指定します。

remove_filter('the_title', 'wptexturize'); // 記事のタイトル
remove_filter('the_content', 'wptexturize'); // 記事の本文
remove_filter('comment_text', 'wptexturize'); // コメント欄
remove_filter('the_excerpt', 'wptexturize'); // 抜粋

これで、wptexturize() による自動変換を停止させることができます。

参考

関数リファレンス/remove filter - WordPress Codex 日本語版

WordPressの自動変換を中止するカスタマイズ方法

  • Pingback: WordPressで連続するハイフン–が表示されない()