Я работаю на многоязычном веб-сайте конкурса, в котором пользователям разрешено зарегистрироваться только один раз. Я использую контактную форму 7 с плагином CFDB . Используя приведенный ниже код, предоставленный автором CFDB, эта функция проверяет, отправлена ли уже форма;
function is_already_submitted($formName, $fieldName, $fieldValue) {
require_once(ABSPATH . 'wp-content/plugins/contact-form-7-to-database-extension/CFDBFormIterator.php');
$exp = new CFDBFormIterator();
$atts = array();
$atts['show'] = $fieldName;
$atts['filter'] = "$fieldName=$fieldValue";
$atts['unbuffered'] = 'true';
$exp->export($formName, $atts);
$found = false;
while ($row = $exp->nextRow()) {
$found = true;
}
return $found;
}
вместе со следующим кодом, который проверяет форму, проверяя, нет ли дубликатов электронной почты (именно так я собираюсь обнаружить дублирующих пользователей)
function one_user_per_contest($result, $tag) {
$formName = array('Contest Form', 'Contest form ES'); // This is the form name for English and spanish
$fieldName = 'your-email'; // Name of the field to validate, which is the email field
$errorMessage = "you've signed up already"; // error message
$name = $tag->name;
if ($name == $fieldName) {
if (is_already_submitted($formName, $fieldName, $_POST[$name])) {
$result->invalidate($tag, $errorMessage);
}
}
return $result;
}
add_filter('wpcf7_validate_email*', 'one_user_per_contest', 20, 2);
Эта проверка работает нормально, так как она не позволяет дублировать электронную почту, но проблема, с которой я столкнулся, я хотел бы получить направление, заключается в том, что я хочу, чтобы сообщение об ошибке отображалось в качестве ответа. intead ответа, говорящего One or more fields have an error. Please check and try again.
, я хочу, чтобы это сказало you've signed up already
[см. изображение ниже];
![Custom Response Result](https://i.stack.imgur.com/yqL1M.jpg)
Спасибо