【问题标题】:Need to customize wordpress contact form-7 form fields Validation需要自定义wordpress联系表单-7个表单域验证
【发布时间】:2015-05-10 16:28:29
【问题描述】:

在我的 Wordpress 网站中,我安装了 Contact Form-7 插件,但遇到了问题。我认为文本字段没有特殊的验证。同样对于电话字段,Contact Form-7 插件仅对 not nullblank 字段提供基本验证。

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

【问题讨论】:

    标签: php forms wordpress contact-form


    【解决方案1】:

    在 Contact Form 7 中,用户输入验证被实现为过滤器功能。用于验证的过滤器挂钩根据表单标签的类型而有所不同,并确定为:wpcf7_validate_ + {表单标签的类型}。因此,对于文本表单标签,使用过滤器挂钩 wpcf7_validate_text。同样,wpcf7_validate_email* 用于 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 和 $tag。 $result 是管理一系列验证过程的 WPCF7_Validation 类的实例。 $tag 是一个关联数组,由给定的表单标签组件组成;正如您在上一个秘籍中看到的,您可以使用 WPCF7_Shortcode 类来处理这种类型的数据。

    查看过滤器功能的内部。首先,检查表单标签的名称以确保验证仅应用于特定字段(您的电子邮件确认)。

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

    最后,别忘了返回 $result。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-18
        • 2019-08-30
        • 2014-05-16
        • 1970-01-01
        • 1970-01-01
        • 2012-10-22
        • 2012-09-05
        相关资源
        最近更新 更多