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


Need to customize wordpress contact form-7 form fields Validation

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

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

在联系人表单 7 中,用户输入验证作为过滤器函数实现。用于验证的筛选器挂钩因表单标记的类型而异,确定为:wpcf7_validate_ + {表单标记的类型}。因此,对于文本表单标签,使用筛选器挂钩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 和 $tag。 $result 是管理一系列验证过程的类WPCF7_Validation实例。 $tag是由给定的表单标记组件组成的关联数组;正如您在前面的配方中看到的,您可以使用WPCF7_Shortcode类来处理此类数据。

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

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

最后,不要忘记归还$result。

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