WORDPRESSには、色んなプラグインがある。
その中に、お問い合わせフォームを簡単に作ろう♪というプラグインがあるのであるが、
この2つで迷い、悩みぬいた挙句(というか、やりたいことを実現するために朝方までソースをいじいじテストした挙句)今回は、contact form 7を利用することにした。
というのも、問題は、KTAI STYLEとの相性というか、、、携帯での文字化け?
フォームのメール入力欄に携帯電話のメールアドレスを使用すると、送られてくる内容確認メールが文字化けするのだ。色んなハックを調べてやってみたんだけど、PCサイトでは、文字化けなく携帯にメールが送られるようになったものの、どうしても、KTAI STYLEの携帯サイトからは、文字化けが直らない・・・
エンコードの問題があるので対応を迫られるのはしょうがない;
とはいえ、これはキビシイ。
cformでは、全体の文字化けは、回避できたけど、formの値の部分のみ文字化けする。(後ちょっとな気がするんだけど;)
てことで、なんとかうまくいったcontact form 7のハック。
wp-contact-form-7.phpのL991あたり。function validateにktai style用のコードを追加。
function validate($contact_form) {
$fes = $this->form_elements($contact_form[‘form’], false);
$valid = true;
$reason = array();
foreach ($fes as $fe) {
$type = $fe[‘type’];
$name = $fe[‘name’];
$values = $fe[‘values’];
$raw_values = $fe[‘raw_values’];
// Ktai ONLY
if (preg_match(‘/^(?:text|textarea)[*]?$/’, $type) && function_exists(‘is_ktai’) && is_ktai())
$_POST[$name] = mb_convert_encoding($_POST[$name], get_bloginfo(‘charset’) ,”SJIS”);
// Before validation corrections
if (preg_match(‘/^(?:text|email|captchar|textarea)[*]?$/’, $type))
$_POST[$name] = (string) $_POST[$name];
よし!
これで、簡単にフォームが追加できる!試しに、確認メールをお問い合わせユーザーに返信する設定で、メアドをdocomoにしてみたけど、OKだった。
は~。理屈は分かってんだけど、情報少ないし、大変だった。
参考サイト:http://d.hatena.ne.jp/v-m-s_memo/20081101/1225548282
この中で、ktai styleの作者のゆりこさんのコメントがあって、
「で、修正コードですが、SJIS 決め打ちはいろいろ問題が出そうです。現在は SJIS ないし SJIS-win しかないですが、将来的には is_ktai() が true でも UTF-8 になる可能性があるため、global $Ktai_Style; してから、$Ktai_Style->get(‘charset’) した値を使ってください。これならば、互換性が保てます。」
ということなので、
// Ktai ONLY
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);
とかしたら、いいってことなのかな???
また、明日にでもテストしてみよう。。。 →これで、いけましたね。
追記:(09/08/17)
contact form 7のバージョンが新しくなったので、こちらに記載していたコードとコードの位置がどちらも変更になってしまった。(ketai styleもバージョンアップされている)
いい感じになったけど、ハックには不都合;
てことで、検索していたら、こちらで、モジュールを公開されているのを発見!
http://www.icoro.com/200908093906.html