Contact form 7とKtai Styleの組み合わせで文字化けを解消する
携帯に対応するフォームを設置したく「Contact form 7」というプラグインを導入してみた。携帯への対応は「Ktai Style」というプラグインを導入。そのままでは携帯からフォームに入力、送信した結果が文字化けしてしまうのでContact form 7の改造が必要だ。
名前、メール、メッセージだけならひとまず以下の改造で文字化けは解消される。
wp-contact-form-7.phpの1026行目あたり
foreach ($fes as $fe) {
$type = $fe['type'];
$name = $fe['name'];
$values = $fe['values'];
$raw_values = $fe['raw_values'];
その下に以下を追加する。
global $Ktai_Style;
$ktai_char = $Ktai_Style->get('charset');
if (preg_match('/^(?:text|textarea)[*]?$/’, $type) && function_exists(’is_ktai’) && is_ktai())
$_POST[$name] = mb_convert_encoding($_POST[$name], get_bloginfo(’charset’) ,$ktai_char);
これだけだとチェックボックス、ラジオボタン、ドロップダウンメニューで文字化けするので、さらに以下を追加。(以下は私の自作なので、間違いがあるかもしれません。一応動作確認はしました。)
if (preg_match('/^(?:select|radio)[*]?$/’, $type) && function_exists(’is_ktai’) && is_ktai())
$_POST[$name] = mb_convert_encoding($_POST[$name], get_bloginfo(’charset’) ,$ktai_char);
//—-
if (preg_match(’/^(?:checkbox)[*]?$/’, $type)) {
if (is_array($_POST[$name])) {
foreach ($_POST[$name] as $key => $value) {
if (function_exists(’is_ktai’) && is_ktai())
$_POST[$name][$key] = mb_convert_encoding($_POST[$name][$key], get_bloginfo(’charset’) ,$ktai_char);
}
}
}
多くの方のブログを参考にした。感謝。
B豚の忘備録さんの記事がなければ実現できなかった。ありがたい。
また、Contakt form 7とKtai Styleの作者の皆さんにはご尽力に心から感謝したい。
特にyuriko.netのゆりこさんには多くのご指導もいただきました。お礼もうしあげます。
#追記:記事投稿時点でContact form7のversionは1.9.5.1でした。
はじめまして。
携帯サイトで問い合わせフォームをと思い検索でこのページまでやってきました。
>wp-contact-form-7.phpの1026行目あたり
とありますが、
私がダウンロードしたVersion: 2.0.2では69行しかありませんでした。
バージョンが違うのでしょうか?
私の記事を書いた時点でのVersionは 1.9.5.1でした。