wordpressのコメント欄に複数の評価を入力するselectタグを設置して、AとBのvalue値(int 1〜5)を合計して2で割った数値をデータベースに登録して、表示させたいのです。
一番詰まっているところは、複数のselectタグ内で選択されているものを取得して合計するところです。
どなたかコメント欄にこのような機能を実装していましたらアドバイスをお願いいたします。
尚、単独のvalue値は問題なく以下のコードでDBに登録して表示するところまではできています。
function
1add_filter( 'comment_form_defaults','change_comment_form_input'); 2function change_comment_form_input($default) { 3 $commenter = wp_get_current_commenter(); 4 ////A 5 $default['fields']['email'] .= '<p class="comment-form-author comment-form-select">' . 6 '<label for="cost">'. __('A') . '</label> 7 <select id="cost" name="cost" class="browser-default"> 8 <option value="1">' . __('★') . '</option> 9 <option value="2">' . __('★★') . '</option> 10 <option value="3">' . __('★★★') . '</option> 11 <option value="4">' . __('★★★★') . '</option> 12 <option value="5">' . __('★★★★★') . '</option> 13 </select> 14 </p>'; 15 16 ////B 17 $default['fields']['email'] .= '<p class="comment-form-author comment-form-select">' . 18 '<label for="exactly">'. __('B') . '</label> 19 <select id="exactly" name="exactly" class="browser-default"> 20 <option value="1">' . __('★') . '</option> 21 <option value="2">' . __('★★') . '</option> 22 <option value="3">' . __('★★★') . '</option> 23 <option value="4">' . __('★★★★') . '</option> 24 <option value="5">' . __('★★★★★') . '</option> 25 </select> 26 </p>'; 27$default['fields']['author'] = ' 28 <p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ' <span class="required">*必須</span>' . '</label> ' . 29 '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . ' /></p>'; 30 return $default; 31} 32 33////AのDBに登録する記述 34add_action( 'comment_post', 'save_comment_meta_data_cost' ); 35function save_comment_meta_data_cost( $comment_id ) { 36 if (isset($_POST['cost'])) { 37 $costs = explode(',', $_POST['cost']); 38 foreach ($costs as $cost) 39 update_comment_meta( $comment_id, 'cost', $cost, true); 40 } 41} 42 43////BのDBに登録する記述 44add_action('comment_post', 'save_comment_meta_data_exactly'); 45function save_comment_meta_data_exactly( $comment_id ) { 46 if (isset($_POST['exactly'])) { 47 $exactlys = explode(',', $_POST['exactly']); 48 foreach ($exactlys as $exactly) 49 update_comment_meta( $comment_id, 'exactly', $exactly, true); 50 } 51} 52 53
回答1件
あなたの回答
tips
プレビュー