Contact Form DBで、パイプ文字以降の値を取得する方法
-
お世話になっております。
Contact Form7で、選択項目によってメール送信先を分岐するフォームを作成しております。
「お問い合わせ」フォームに記述しているコードは以下のようなものです。
[radio group use_label_element "お問い合わせ内容1|aaa@xxx.co.jp" "お問い合わせ内容2|bbb@xxx.co.jp" "お問い合わせ内容3|ccc@xxx.co.jp"]
自動送信メールへの記述
[_raw_group]
以前別スレッドにてご教示いただき、ここまでは問題なくできました。
参考:
https://contactform7.com/ja/selectable-recipient-with-pipes/ただ、Contact Form DBには、パイプ文字以降(この場合は、メールアドレス)が記録されてしまいます。
http://wordpress.stackexchange.com/questions/83429/how-to-choose-email-recipient-in-contact-form-7-based-on-address-state-input-in
こちらを参考に、functions.phpを編集してみたのですが、やはりパイプ文字前の値が記録できません。functions.phpへの記述
function form_with_pipes_handler($formName, $fieldName, $newFieldName, &$formData) { if ($formData && $formName == $formData->title && property_exists($formData, 'WPCF7_ContactForm') && method_exists($formData->WPCF7_ContactForm, 'form_scan_shortcode')) { $scanned_form_tags = $formData->WPCF7_ContactForm->form_scan_shortcode(); $emailSelected = $formData->posted_data[$fieldName]; if (is_array($emailSelected) && count($emailSelected) == 1) { $emailSelected = $emailSelected[0]; } $valueSelected = null; foreach ($scanned_form_tags as $tag) { if ($tag['name'] == $fieldName) { foreach ($tag['raw_values'] as $rawValue) { // value|email $valuesArray = explode('|', $rawValue); if (count($valuesArray) == 2 && $valuesArray[1] == $emailSelected) { $valueSelected = $valuesArray[0]; break; } } } if ($valueSelected != null) { break; } } if ($valueSelected != null) { $formData->posted_data[$fieldName] = $valueSelected; $formData->posted_data[$newFieldName] = $emailSelected; } } return $formData; } function location_form_handler($formData) // Use a different function name for each form { $formName = 'お問い合わせ'; $fieldName = 'group'; $newFieldName = $fieldName . '_email'; return form_with_pipes_handler($formName, $fieldName, $newFieldName, $formData); } add_filter('cfdb_form_data', 'location_form_handler');
Contact Form7のバージョンは4.1.1です。
仕方なく、jqueryでhiddenフィールドに分岐したメールアドレスを出力して、
それを取得する方法を取っているのですが、スマートなやり方とは思えず・・
正しい方法はございますでしょうか?どなた様かご教示いただけますと幸いです。
どうぞよろしくお願いいたします。
- トピック「Contact Form DBで、パイプ文字以降の値を取得する方法」には新たに返信することはできません。