wordpressプラグインのcntact_form7で送信した値をDBに保存したい為、
ネットの情報を参考に、下記の様な形で実装しました。
テキストのフォーム部分は、DBにインサートされるのですが、
複数要素を持つ”ラジオボタン/チェックボックス”がうまくいきません。
初心者の為、説明/情報不足があるかと思いますが、
ご教授宜しくお願いします。
▼環境
wordpress バージョン:4.3
contact_form7バージョン:4.3
MySQL バージョン:5.0.95
【出力されたHTMLソース】
HTML
1<div role="form" class="wpcf7" id="wpcf7-f141-o1" lang="ja" dir="ltr"> 2 <div class="screen-reader-response"></div> 3 <form action="/wordpress/form/poll/#wpcf7-f141-o1" method="post" class="wpcf7-form" novalidate="novalidate"> 4 <div style="display: none;"> 5 <input type="hidden" name="_wpcf7" value="141" /> 6 <input type="hidden" name="_wpcf7_version" value="4.3" /> 7 <input type="hidden" name="_wpcf7_locale" value="ja" /> 8 <input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f141-o1" /> 9 <input type="hidden" name="_wpnonce" value="d41c7e5b6b" /> 10 </div> 11 12 <div class="formGroup"> 13 <p>お名前 (必須)<br /> 14 <span class="wpcf7-form-control-wrap name"><input type="text" name="name" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false" /></span> 15 </p> 16 <p>メールアドレス (必須)<br /> 17 <span class="wpcf7-form-control-wrap mail"><input type="email" name="mail" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email" aria-required="true" aria-invalid="false" /></span> 18 </p> 19 <p>ラジオアイテム<br /> 20 <span class="wpcf7-form-control-wrap item"><span class="wpcf7-form-control wpcf7-radio"><span class="wpcf7-list-item first"><input type="radio" name="item" value="itemA" /> <span class="wpcf7-list-item-label">itemA</span></span><span class="wpcf7-list-item last"><input type="radio" name="item" value="itemB" /> <span class="wpcf7-list-item-label">itemB</span></span></span></span> 21 </p> 22 <p> 23 <input type="submit" value="送信" class="wpcf7-form-control wpcf7-submit"/> 24 </p> 25 </div> 26 <div class="wpcf7-response-output wpcf7-display-none"></div> 27 </form> 28</div>
【contact_form7設定画面のソース】
<div class="formGroup"> <p>お名前 (必須)<br /> [text* name] </p> <p>メールアドレス (必須)<br /> [email* mail] </p> <p>ラジオアイテム<br /> [radio item "itemA" "itemB"] </p> </div> <p> [acceptance acceptance] 規約に同意する </p> <p>[submit "送信"]</p>
【fuction.php】
PHP
1/** Contact-form7 insert DB [function.php] 2*****************************************************/ 3function contactform7_before_send_mail( $form_to_DB ) { 4 5 global $wpdb; 6 7 $form_to_DB = WPCF7_Submission::get_instance(); 8 9 if ( $form_to_DB ) { 10 $formData = $form_to_DB->get_posted_data(); 11 } 12 13 $name =$formData['name']; 14 $mail =$formData['mail']; 15 $item =$formData['item']; //radio button 16 $wpdb->insert ( 'wp_cf7db', array('name' => $name,'mail' => $mail), array( '%s','%s' ) ); 17 18 //下記はダメでした。JSONエラーがでて、DBにインサートされません。 19 //JSON.parse: unexpected character at line 1 column 1 of the JSON data 20 //$wpdb->insert ( 'wp_cf7db', array('name' => $name,'mail' => $mail,'item' => $item), array( '%s','%s','%s' ) ); 21 22} 23remove_all_filters ('wpcf7_before_send_mail'); 24add_action( 'wpcf7_before_send_mail', 'contactform7_before_send_mail' );
sql
1CREATE TABLE IF NOT EXISTS `wp_cf7db` ( 2 `id` int(11) NOT NULL AUTO_INCREMENT, 3 `item` varchar(50) DEFAULT NULL, 4 `name` varchar(50) DEFAULT NULL, 5 `mail` varchar(255) DEFAULT NULL, 6 PRIMARY KEY (`id`) 7)

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。