mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

WordPress - 半角ハイフン文字化け対応!

[ ブログ ] [ WordPress ]

こんばんは。

当方、WordPressブログでタイトルを記述する際、文字列と文字列を「半角スペースで挟んだ半角ハイフン」で結合したような形式にすることが多いです。(この記事のタイトルもそうです)

現在「UTF-8」で作成しているホームページに「半角スペースで挟んだ半角ハイフン」を含んだタイトルを表示させた際は問題ないのですが、ブログのタイトルをTwitterで投稿すると「半角スペースで挟んだ半角ハイフン」の部分が「?」表示になっていることに気づきました。 「UTF-8」でないであろう携帯アプリで確認した時に気づきました。

そう言えば、以前「Shift-JIS」で作成したホームページにブログ記事から「半角スペースで挟んだ半角ハイフン」を含んだタイトルを表示させていた時、半角スペースで挟んだ半角ハイフンが「?」表示なっていたことも思い出しました。

最近はその現象を目にすることがなかったので気にもしていませんでしたが、気づいてしまった以上修正せずにおられません。

調べた結果、原因がはっきりわかりました。

WordPress自体がそのような特殊(?)な文字列を変換しているようです。 三連の半角ハイフンを1つの半角ハイフンに変換したりもしていました。

以下、対応方法です。

対応方法

「formatting.php」の修正

WordPressインストールフォルダの「wp-includes/formatting.php」というファイルの53行目あたり(WordPress3.2.1の場合)を以下のように編集する。 (「–」と「—」を「-」に置換するように修正) ↓変更前↓

1
2
   $static_characters = array_merge(array('---', ' -- ', '--', ' - ', 'xn–', '...', '``', '\'\'', ' (tm)'), $cockney);
   $static_replacements = array_merge(array('—', ' — ', '–', ' – ', 'xn--', '…', $opening_quote, $closing_quote, ' ™'), $cockneyreplace);

↓変更後↓

1
2
   $static_characters = array_merge(array('---', ' -- ', '--', ' - ', 'xn–', '...', '``', '\'\'', ' (tm)'), $cockney);
   $static_replacements = array_merge(array('---', ' -- ', '--', ' - ', 'xn--', '…', $opening_quote, $closing_quote, ' ™'), $cockneyreplace);

これだけでした。 もちろん、デフォルトの変換方法がよいという方もおられるでしょう。 必要に応じて対応可能ということです。

ただ、WordPress自体をアップデートするとこのファイルも元に戻りますので、アップデートの都度修正することを忘れないようにしなければなりません。

以上。

Comments