WordPress — Gravity Forms: как добавить поле для подтверждения номера телефона

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


person user1724434    schedule 01.12.2014    source источник


Ответы (1)


Этот код с 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));
person Jake    schedule 14.01.2015