联系表格7 - 自定义验证

maz*_*ive 6 php validation wordpress contact contact-form-7

我只需要验证一个字段(称为"实例")以仅接受小写ASCII字母和数字,第一个字符也必须是字母而不是数字.它将接受大写字符,但我们需要它在输入时将它们小写.因此,如果有人使用实例名称McDonalds,它将小写为mcdonalds(不仅仅是CSS).也不允许有空格.

这可能与CF7有关吗?如果是这样,请解释如何.

我已经尝试过这种自定义验证方法,但即使在文件中使用预设的自定义验证,它也只是显示字段短代码而不是字段本身.

谢谢

Zaf*_*r S 8

来自contactform7.com上的自定义验证→验证作为过滤器:

在联系表单7中,用户输入验证被实现为过滤功能.用于验证的过滤器钩子取决于form-tag的类型,并确定为:wpcf7_validate_ + {form-tag的类型}.因此,对于文本表单标记,使用过滤器钩子wpcf7_validate_text.同样,wpcf7_validate_email*用于email*form-tags.

假设您在表单中包含以下电子邮件字段:

  Email:         [email* your-email]
  Confirm email: [email* your-email-confirm]
Run Code Online (Sandbox Code Playgroud)

以下清单显示了验证两个字段是否具有相同值的代码.

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;
}
Run Code Online (Sandbox Code Playgroud)

两个参数将传递给过滤函数:$ result和$ tag.$ result是WPCF7_Validation类的一个实例,它管理一系列验证过程.$ tag是一个由给定的form-tag组件组成的关联数组; 正如您在上一个配方中看到的那样,您可以使用WPCF7_Shortcode类来处理此类数据.

查看过滤器功能的内部.首先,检查form-tag的名称以确保验证仅应用于特定字段(your-email-confirm).

然后比较两个电子邮件字段值,如果它们不匹配,将调用$ result-> invalidate().您需要将两个参数传递给invalidate()方法:第一个参数应该是$ tag变量,第二个参数是您希望字段显示的验证错误消息.

最后,不要忘记返回$ result.

  • 这是来自插件博客的复制和粘贴:http://contactform7.com/2015/03/28/custom-validation/ (3认同)
  • 对于googlers:'WPCF7_Shortcode`已被弃用.你应该使用`WPCF7_FormTag`.见https://contactform7.com/2016/12/03/contact-form-7-46/ (2认同)

小智 3

请使用这个wordpress插件

联系表单 7 的 Jquery 验证 https://wordpress.org/plugins/jquery-validation-for-contact-form-7/