在我的Wordpress网站上,我安装了Contact Form-7插件,但是遇到了一个问题。我认为对于文本字段没有特殊的验证。此外,对于电话字段,Contact Form-7插件仅提供对not null
或blank
字段的基本验证。
我的问题是:对于这些问题,我应该如何解决它们?我可以修改核心插件文件,也可以创建自己的联系人表单。
发布于 2015-04-24 11:06:46
在Contact Form7中,用户输入验证是作为过滤函数实现的。用于验证的过滤器挂钩根据表单标签的类型而有所不同,并确定为: 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类来处理这种类型的数据。
查看filter函数的内部。首先,检查表单标记的名称,以确保验证仅应用于特定字段(your-email-confirm)。
然后比较这两个电子邮件字段值,如果它们不匹配,将调用$result->invalidate()。您需要向invalidate()方法传递两个参数:第一个参数应该是$tag变量,第二个参数是您希望字段显示的验证错误消息。
最后,不要忘记返回$result。
发布于 2016-03-21 11:56:01
新的contact form 7插件提供了对其最新更新的内置验证。
https://stackoverflow.com/questions/28943314
复制相似问题