Ограничить отправку пользователя одним пользователем с пользовательским ответом. Контактная форма 7 - PullRequest
1 голос
/ 15 апреля 2019

Я работаю на многоязычном веб-сайте конкурса, в котором пользователям разрешено зарегистрироваться только один раз. Я использую контактную форму 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

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...