在我的Wordpress网站上,我安装了Contact Form-7插件,并且遇到了问题。我认为文本字段没有特殊的验证。此外,对于电话字段,Contact Form-7插件仅提供not null
或blank
字段的基本验证。
我的问题是:对于那些问题,我该怎么做才能修复它们?我可以修改核心插件文件或创建我自己的联系表单。
答案 0 :(得分: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。
答案 1 :(得分:1)
新的联系表单7插件在其最新更新中提供内置验证。