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

101
18

Мне нужно создать форму с пользовательским полем проверки в форме контакта 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;
}


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

спросил(а) 2021-01-25T16:18:24+03:00 5 месяцев назад
1
Решение
116

У меня была аналогичная проблема с пользовательской проверкой формы контакта 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." );

ответил(а) 2021-01-25T16:18:24+03:00 5 месяцев назад
88

У меня также возникла эта проблема, когда я обновляю контактную форму 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')
)));
}

ответил(а) 2021-01-25T16:18:24+03:00 5 месяцев назад
45

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);


имя домена → имя поля


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

ответил(а) 2021-01-25T16:18:24+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема