提问人:GrimesWeb 提问时间:10/16/2023 更新时间:10/20/2023 访问量:28
联系表单 7 的自定义错误消息 - 可以检查所有内容,但如果它是空的
Custom error message for Contact Form 7 - Can check everything but if it's empty
问:
我似乎要疯了:)
我正在使用以下代码来检查名称为“your-name”的联系表单 7 字段是否为空,如果是,则显示自定义错误消息。
我尝试过检查空字符串>
add_filter('wpcf7_validate_text*', 'custom_text_validation_filter', 20, 2);
function custom_text_validation_filter($result, $tag) {
if ('your-name' == $tag->name) {
$field_name = isset( $_POST['your-name'] ) ? trim( $_POST['your-name'] ) : '';
if ($field_name == '') {
$result->invalidate( $tag, "Are you sure this is the correct name?" );
}
}
return $result;
}
add_filter('wpcf7_validate_text*', 'custom_text_validation_filter', 20, 2);
并使用PHP的空函数进行检查
add_filter('wpcf7_validate_text*', 'custom_text_validation_filter', 20, 2);
function custom_text_validation_filter($result, $tag) {
$tag = new WPCF7_FormTag($tag);
if ('your-name' == $tag->name) {
$field_name = isset( $_POST['your-name'] ) ? trim( $_POST['your-name'] ) : '';
if (empty($field_name)) {
$result->invalidate( $tag, "Are you sure this is the correct name?" );
}
}
return $result;
}
这些都不起作用。
这是疯狂的部分。我可以检查其他任何东西,但空的。例如,我可以使用 > 检查它是否不为空
if ($field_name !== '') {
$result->invalidate( $tag, "Why did you type something?" );
}
如果我尝试在名称字段中提交包含任何内容的表单,那就可以正常工作。
我还可以检查它是否包含某个字符,例如>
if ($field_name == 'abcd') {
$result->invalidate( $tag, "efg?" );
}
这也非常有效。
但是,如果我检查该字段是否为空,它将返回默认错误消息。
if ($field_name == '') {
$result->invalidate( $tag, "I think you meant for something to be here?" );
}
有谁知道为什么检查它是否为空可能不起作用?
答:
0赞
GrimesWeb
10/20/2023
#1
如果其他人遇到这种情况,CBroe 会搞定。它不起作用的原因是,当您将星号 (*) 添加到字段时,它会使用 CF7 的验证,并且几乎使您的验证变得无用(除非您能够找到它的钩子)。
答案很简单,那就是使该字段不是必需的(不使用 Cf7 的逻辑)。
然后,当您使用我发布的代码片段时,它将使用您的验证,您可以在其中做任何您想做的事情。
更改此>
[text* 你的名字]
>
[text your-name] 和你的好去添加你的自定义验证!
评论