2014-12-01 2 views
0

Если вы знакомы с WordPress Gravity Forms, то знаете, что вы можете добавить поле «Телефон» из дополнительных опций полей. Это здорово, но я работаю над сайтом, который предлагает услугу для мобильных пользователей, поэтому мне нужно убедиться, что человек, заполняющий форму, делает это дважды (в двух полях), чтобы убедиться, что в их мобильном номере нет опечатки , Я искал всюду и не могу понять, как это сделать.WordPress - Gravity Forms: как добавить поле «подтвердить номер телефона»

ответ

2

Этот код от http://gravitywiz.com/custom-field-confirmation/ работал идеально для меня. На сайте есть более подробные инструкции.

Вставьте это в ваш файл functions.php и измените код register_confirmation_fields(8, array(1, 2)); в соответствии с вашей формой.

/** 
* Double Confirmation Fields 
* http://gravitywiz.com/2012/05/01/custom-field-confirmation/ 
*/ 

register_confirmation_fields(8, array(1, 2)); 

add_filter('gform_validation', 'gfcf_validation'); 
function gfcf_validation($validation_result) { 
    global $gfcf_fields; 

    $form = $validation_result['form']; 
    $confirm_error = false; 

    if(!isset($gfcf_fields[$form['id']])) 
     return $validation_result; 

    foreach($gfcf_fields[$form['id']] as $confirm_fields) { 

     $values = array(); 

     // loop through form fields and gather all field values for current set of confirm fields 
     foreach($form['fields'] as $field) { 
      if(!in_array($field['id'], $confirm_fields)) 
       continue; 

      $values[] = rgpost("input_{$field['id']}"); 

     } 

     // filter out unique values, if greater than 1, a value was different 
     if(count(array_unique($values)) <= 1) 
      continue; 

     $confirm_error = true; 

     foreach($form['fields'] as &$field) { 
      if(!in_array($field['id'], $confirm_fields)) 
       continue; 

      // fix to remove phone format instruction 
      if(RGFormsModel::get_input_type($field) == 'phone') 
       $field['phoneFormat'] = ''; 

      $field['failed_validation'] = true; 
      $field['validation_message'] = 'Your values do not match.'; 
     } 

    } 

    $validation_result['form'] = $form; 
    $validation_result['is_valid'] = !$validation_result['is_valid'] ? false : !$confirm_error; 

    return $validation_result; 
} 

function register_confirmation_fields($form_id, $fields) { 
    global $gfcf_fields; 

    if(!$gfcf_fields) 
     $gfcf_fields = array(); 

    if(!isset($gfcf_fields[$form_id])) 
     $gfcf_fields[$form_id] = array(); 

    $gfcf_fields[$form_id][] = $fields; 
} 

// register field IDs 1 and 2 on form ID 8 
register_confirmation_fields(8, array(1, 2)); 
Смежные вопросы