我必须在联系表单7中创建一个带有自定义验证字段的表单。它不能与Contact Form 7的最新版本(4.1.1)一起使用,但在旧版本中工作。
我创建了一个从表单中获取优惠券代码的字段。如果优惠券是从“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;
}
请给我一些建议。
答案 0 :(得分:6)
我在联系表单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." );
答案 1 :(得分:3)
当我用4.1.1更新联系表格7时,我也遇到了这个问题。在最新版本的联系表单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')
)));
}
答案 2 :(得分:0)
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);
phonenumber - >字段名称
尝试一次。