首页 文章

需要自定义wordpress联系表单-7表单字段验证

提问于
浏览
1

在我的Wordpress网站上,我安装了Contact Form-7插件,并且遇到了问题 . 我认为文本字段没有特殊的验证 . 此外,对于电话字段,Contact Form-7插件仅提供 not nullblank 字段的基本验证 .

我的问题是:对于那些问题,我该怎么做才能修复它们?我可以修改核心插件文件或创建自己的联系表单 .

2 回答

  • 1

    新的联系表单7插件在其最新更新中提供内置验证 .

  • 1

    在联系表单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]
    

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

    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和$ tag . $ result是WPCF7_Validation类的一个实例,它管理一系列验证过程 . $ tag是一个由给定的form-tag组件组成的关联数组;正如您在上一个配方中看到的那样,您可以使用WPCF7_Shortcode类来处理此类数据 .

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

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

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

相关问题