WordPressに書いた記事をそのままHTMLメールで送るという設計をしているサイトがあります。そのメールにいつもよくわからない箇所へ「?」が入るのが気になっていました。
元記事は、こちら。ソースコードは下のようになっています。
どうやら赤枠にあるスペースが原因だと思います。普通のスペースでは無いことが原因で、メール配信の際に文字化けが起こり、「?」に変換されているのでしょう。
クライアントに随時「このスペースを削除してください」というのは酷です。従って、プログラム側で何とかする必要があります。
そこで今回の設計は、
- 「公開」ボタンを押すと自動的に件のスペースを通常スペースへ書き換える
という方針にしました。そのコードは以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//--------------------------------------------------------------------------- // 記事文章の変更 //--------------------------------------------------------------------------- function replace_post_data($data, $postarr){ $content = $data['post_content']; $array = array ( '?' => ' ', //文字化け「?」の修正 ); $content = strtr($content, $array); $data['post_content'] = $content; return $data; } add_filter('wp_insert_post_data', 'replace_post_data', '99', 2); |
$array の箇所はいくらでも追記出来るので、やりたい事に応じてアレンジして下さい。
これで記事自体から変なコードのスペースは消えました。メールからも「?」が消えて無事解決しました。