ホーム > wordpress > Contact form 7とKtai Styleの組み合わせで文字化けを解消する

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でした。

  1. kame7
    2009 年 9 月 10 日 03:57 | #1

    はじめまして。
    携帯サイトで問い合わせフォームをと思い検索でこのページまでやってきました。

    >wp-contact-form-7.phpの1026行目あたり

    とありますが、
    私がダウンロードしたVersion: 2.0.2では69行しかありませんでした。

    バージョンが違うのでしょうか?

  2. 2009 年 9 月 10 日 12:40 | #2

    私の記事を書いた時点でのVersionは 1.9.5.1でした。

  1. 2009 年 7 月 7 日 11:39 | #1
  2. 2009 年 7 月 19 日 01:49 | #2