我只需要验证一个字段(称为“实例”)以仅接受小写ASCII字母和数字,第一个字符也必须是字母而不是数字。它将接受大写字符,但我们需要它在输入时将它们小写。因此,如果有人使用实例名称McDonalds,它将被小写为mcdonalds(不仅仅是CSS)。也不允许有空格。
CF7可以实现吗?如果是这样,请解释如何。
我已经尝试了this自定义验证方法,但即使在文件中使用预设的自定义验证,它也只是显示字段短代码而不是字段本身。
由于
答案 0 :(得分:7)
从contactform7.com 自定义验证→验证过滤器:
在联系表单7中,用户输入验证作为过滤器实现 功能。用于验证的过滤器挂钩取决于 form-tag的类型确定为:wpcf7_validate_ + {type of form-tag}。因此,对于文本表单标签,过滤器挂钩 使用wpcf7_validate_text。同样,使用wpcf7_validate_email * 用于电子邮件*表格标签。
假设您在表单中包含以下电子邮件字段:
Email: [email* your-email] Confirm email: [email* your-email-confirm]
以下清单显示了验证两个字段的代码 具有相同的价值观。
add_filter('wpcf7_validate_email*', 'custom_email_confirmation_validation_filter', 20, 2); function custom_email_confirmation_validation_filter($result, $tag) { $tag = new WPCF7_Shortcode($tag); if ('your-email-confirm' == $tag->name) { $your_email = isset($_POST['your-email']) ? trim($_POST['your-email']) : ''; $your_email_confirm = isset($_POST['your-email-confirm']) ? trim($_POST['your-email-confirm']) : ''; if ($your_email != $your_email_confirm) { $result->invalidate($tag, "Are you sure this is the correct address?"); } } return $result; }
两个参数将传递给过滤函数:$ result和 $标签。 $ result是一个管理a的WPCF7_Validation类的实例 验证过程的顺序。 $ tag是一个关联数组 由给定的表单标签组件组成;正如你在前面看到的那样 配方,你可以使用WPCF7_Shortcode类来处理这类数据。
查看过滤器功能的内部。首先,检查名称 form-tag确保验证仅适用于 特定字段(您的电子邮件确认)。
然后比较两个电子邮件字段值,如果它们不匹配, $ result->将调用invalidate()。您需要传递两个参数 到invalidate()方法:第一个参数应该是$ tag 变量,第二个参数是验证错误消息 您想要显示该字段。
最后,不要忘记返回$ result。
答案 1 :(得分:2)
您可以使用.remove-text-decoration {
text-decoration: none;
}
函数为表单字段输入添加自己的自定义验证。
要为add_filter
字段添加自定义验证,可以在主题的根目录中的textarea
文件内添加以下内容。
functions.php
对我来说,诀窍是将add_filter( 'wpcf7_validate_textarea*', 'custom_textarea_validation_filter', 1, 2 );
function custom_textarea_validation_filter( $result, $tag ) {
$tag = new WPCF7_Shortcode($tag);
$result = (object)$result;
$name = 'project-synopsis';
if ( $name == $tag->name ) {
$project_synopsis = isset( $_POST[$name] ) ? trim( wp_unslash( (string) $_POST[$name] ) ) : '';
if ( empty( $project_synopsis ) ) {
$result->invalidate( $tag, "Please write a quick project synopsis." );
}
}
return $result;
}
参数转换为对象,因为用于添加错误消息的$result
方法在转换之前不起作用。
答案 2 :(得分:1)
请使用此wordpress插件
联系表格7的Jquery验证 https://wordpress.org/plugins/jquery-validation-for-contact-form-7/
答案 3 :(得分:1)
我在验证名称字段时遇到了类似的问题,我在functions.php中添加了以下代码,您可以通过更改正则表达式来自定义它
function my_wpcf7_validate_text( $result, $tag ) {
$type = $tag['type'];
$name = $tag['name'];
$value = $_POST[$name] ;
if ( strpos( $name , 'name' ) !== false ){
$regex = '/^[a-zA-Z]+$/';
$Valid = preg_match($regex, $value, $matches );
if ( $Valid > 0 ) {
} else {
$result->invalidate( $tag, wpcf7_get_message( 'invalid_name' ) );
}
}
return $result;
}
add_filter( 'wpcf7_validate_text*', 'my_wpcf7_validate_text' , 10, 2 );
add_filter( 'wpcf7_messages', 'mywpcf7_text_messages' );
function mywpcf7_text_messages( $messages ) {
return array_merge( $messages, array(
'invalid_name' => array(
'description' => __( "Name is invalid", 'contact-form-7' ),
'default' => __( 'Name seems invalid.', 'contact-form-7' )
)
));
}
答案 4 :(得分:1)
//为CF7表单字段添加自定义验证
function is_company_email($email){ // Check against list of common public email providers & return true if the email provided *doesn't* match one of them
if(
preg_match('/@gmail.com/i', $email) ||
preg_match('/@hotmail.com/i', $email) ||
preg_match('/@live.com/i', $email) ||
preg_match('/@msn.com/i', $email) ||
preg_match('/@aol.com/i', $email) ||
preg_match('/@yahoo.com/i', $email) ||
preg_match('/@inbox.com/i', $email) ||
preg_match('/@gmx.com/i', $email) ||
preg_match('/@me.com/i', $email)
){
return false; // It's a publicly available email address
}else{
return true; // It's probably a company email address
}
}
function your_validation_filter_func($result,$tag){
$type = $tag['type'];
$name = $tag['name'];
if('yourid' == $value){ // Only apply to fields with the form field name of "company-email"
$the_value = $_POST[$name];
if(!is_company_email($the_value)){ // Isn't a company email address (it matched the list of free email providers)
$result['valid'] = false;
$result->invalidate( $tag, wpcf7_get_message( 'invalid_email' ));
}
}
return $result;
}
add_filter( 'wpcf7_validate_email', 'your_validation_filter_func', 10, 2 );
// Email field or contact number field
add_filter( 'wpcf7_validate_email*', 'your_validation_filter_func', 10, 2 ); // Req. Email field or contact number
答案 5 :(得分:1)
尝试使用此插件。允许为免费版本中的每个字段设置自定义验证消息。 网址:https://wordpress.org/plugins/cf7-custom-validation-message/