Пользовательская проверка не работает в контактной форме 7 в версии 4.1.1

Мне нужно создать форму с настраиваемым полем проверки в контактной форме 7. Она не работает с последней версией (4.1.1) контактной формы 7, но работает в более старой версии.

Я создал поле для получения кода купона из формы. Я хочу проверить запись, если купон запускается с «HIP». Мой код приведен ниже:

add_filter( 'wpcf7_validate_text', 'your_validation_filter_func', 999, 2 );
add_filter( 'wpcf7_validate_text*', 'your_validation_filter_func', 999, 2 );


function your_validation_filter_func( $result, $tag ) {
$type = $tag['type'];
$name = $tag['name'];      
if ( 'coupon_code' == $name ) {
$the_value = $_POST[$name];

        $myresult = substr($the_value, 0, 3);
        if($myresult=="HIP")
        {
            $result['valid'] = true;
        }
        else
        {
            $result['valid'] = false;
            $result['reason'][$name] = "Not a valid coupon code";
        }
}

return $result;
}

Дайте мне предложение, пожалуйста.


person Jitendra Damor    schedule 15.04.2015    source источник
comment
Вы должны просмотреть все свои вопросы на этом сайте и выбрать правильные ответы.   -  person rnevius    schedule 23.09.2015


Ответы (3)


У меня была аналогичная проблема с пользовательскими проверками контактной формы 7. Наконец-то наткнулся на этот пост, а также на официальную ссылку на пользовательскую форму 7 для пользовательских проверок здесь: http://contactform7.com/2015/03/28/custom-validation/.

Единственное обновление, необходимое для кода, работающего в более ранних версиях CF7, — это замена следующей строки кода:

$result['reason'][$name] = 'Your custom validation message goes here';

с:

$result->invalidate( $tag, "Your custom validation message goes here." );
person Ruchika    schedule 28.04.2015

У меня также возникла эта проблема, когда я обновил контактную форму 7 до версии 4.1.1. В последней версии контактной формы 7 старый пользовательский код проверки не работает.

Итак, после очень исследований я нашел решение для этого. Итак, в вашем случае вам нужно изменить свой код следующим образом. Может быть, это будет полезно для вас.

add_filter('wpcf7_validate_text', 'your_validation_filter_func', 999, 2);
add_filter('wpcf7_validate_text*', 'your_validation_filter_func', 999, 2);

function your_validation_filter_func($result, $tag) {
$type = $tag['type'];
$name = $tag['name'];

if ('coupon_code' == $name) {

    $the_value = $_POST[$name];

    $myresult = substr($the_value, 0, 3);
    if ($myresult == "HIP") {
        $result['valid'] = true;
    } else {
        $result->invalidate($tag, wpcf7_get_message('invalid_coupon_code'));
    }
}

return $result;
}

add_filter('wpcf7_messages', 'mywpcf7_text_messages');

function mywpcf7_text_messages($messages) {
return array_merge($messages, array(
    'invalid_coupon_code' => array(
        'description' => __("Coupon is invalid", 'contact-form-7'),
        'default' => __('Coupon seems invalid.', 'contact-form-7')
)));
}
person Chandresh    schedule 15.04.2015

 function custom_phone_validation($result,$tag){
        $type = $tag['type'];
        $name = $tag['name'];
        if($name == 'phonenumber'){
                    $phoneNumber = isset( $_POST['phonenumber'] ) ? trim( $_POST['phonenumber'] ) : '';
            $the_value = preg_match("/your_reg_exp format for phone number/",$_POST[$name]);
            if($phoneNumber == "" || $the_value == false ){ 
                $result->invalidate( $tag, "please enter vaild phone number" );
            }
        }
        return $result;
    }
    add_filter('wpcf7_validate_text','custom_phone_validation', 10, 2);
    add_filter('wpcf7_validate_text*', 'custom_phone_validation', 10, 2);

номер телефона -> имя поля

попробуйте это один раз.

person Ananthaselvam P    schedule 30.09.2016