我正在尝试更改电子邮件的筛选器,使其显示“需要电子邮件地址”。我检查它是否为空()。
我在联系人表格7中的标签是[电子邮件*您的电子邮件]
你可以在这里看到,我尝试了所有的方法来改变过滤器的响应,但没有任何效果。
add_filter( \'wpcf7_validate_email\', \'custom_email_confirmation_validation_filter\', 20, 2 );
add_filter( \'wpcf7_validate_email*\', \'custom_email_confirmation_validation_filter\', 20, 2 );
function custom_email_confirmation_validation_filter( $result, $tag ) {
$result->invalidate( $tag, "Email Address is Required" );
if ( \'your-email\' == $tag->name ) {
$your_email = isset( $_POST[\'your-email\'] ) ? trim( $_POST[\'your-email\'] ) : \'\';
if ( empty($your_email) ) {
$result->invalidate( $tag, "Email Address is Required" );
} else {
$result->invalidate( $tag, "Email Address is Required" );
}
}
return $result;
}
我可能会错过什么?
谢谢
最合适的回答,由SO网友:João Teixeira 整理而成
首先,如果您已经使用该功能检查字段是否为空,则无需在backoffice[电子邮件*您的电子邮件]中使用*。
无论如何,它都不起作用,因为is_required()
比函数先执行。
Solutions:
1) 删除后端中的*
OR
(2)
Change the priority// From 20 to 5 should work
// You only need to apply this to this filter as it is the one for required fields
add_filter( \'wpcf7_validate_email*\', \'custom_email_confirmation_validation_filter\', 5, 2 );
希望有帮助!