проверьте, существует ли электронная почта пользователя, и если нет, остановите отправку формы ниндзя

У меня есть одна форма, созданная с помощью форм ниндзя, и я использую ajax для ее отправки. Мне нужно проверить, существует ли введенный адрес электронной почты в базе данных (user_email), и если он существует правильно, я правильно отправляю форму, но если он не существует, форма не отправляется, и мне нужно дать пользователю сообщение типа «электронная почта не существует». Форма представляет собой опрос, который должен заполнить зарегистрированный пользователь, который дает нам отзыв о наших услугах, но опрос находится на странице, где пользователь может отправить свое мнение без необходимости входа в систему.

Я занимаюсь расследованием, и на данный момент у меня есть:

function example_disable_saving_subs( $save, $form_id ) {

    global $ninja_forms_processing;
    $form_id = $ninja_forms_processing->get_form_ID();
    $email = ninja_forms_get_field_by_id( 18 );

    //cuestionario feedback profesor sobre creación de un curso
    if($form_id == 3){
        if( !email_exists( $email )) {
            $save = false;
            $ninja_forms_processing->add_error('email_no_existe', 'El email no existe');
        }
    }
    return $save;
}
add_filter( 'ninja_forms_save_submission', 'example_disable_saving_subs', 2, 10 );

Но я беру поле $email без введенного значения... Кроме того, я не знаю, как дать пользователю сообщение "электронная почта не существует".

Как видите, я выбрал фильтр ninja_forms_save_submission. Возможно это не тот фильтр. Надеюсь на вашу неоценимую помощь. Заранее спасибо, Даниил


person Daniel Garcia Sanchez    schedule 11.11.2014    source источник


Ответы (2)


спасибо за вашу помощь @Renato, я даю вам +1 :) Это правда, что я могу сделать это так, как вы мне говорите, но я не хочу ломать API WordPress, то есть , то, как эта CMS использует javascript, php и т. д. и т. д. Итак, я хотел сделать это с помощью API форм ниндзя, который является плагином, который я использую для создания этого опроса. Наконец, я решил это... это была моя ошибка, потому что я не использовал правильный фильтр... Изучив еще несколько, есть другой фильтр, гораздо более подходящий: ninja_forms_pre_process Вот код:

function add_change_ninja_forms_landing_page(){
    add_action( 'ninja_forms_pre_process', 'handle_custom_ninja_forms' );
}
add_action( 'init', 'add_change_ninja_forms_landing_page' );

function handle_custom_ninja_forms(){

    global $ninja_forms_processing;

    $form_id = $ninja_forms_processing->get_form_ID();  

    //if it's my form of survey
    if( $form_id == 3 ){

        $email = $ninja_forms_processing->get_field_value( 18 ); //pick up the value of the email field    
       //use the native function of wordpress to check if there's a user with this email 
       //is anyone has this email, it does not exist   
       if( !email_exists( $email )) {
                $ninja_forms_processing->add_error('email_no_existe', 'El email indicado no está registrado en nuestra base de datos'); //add_error stop the form and gives the error message                
        }
    }
}

С кодом выше все работает отлично! :) Спасибо!

person Daniel Garcia Sanchez    schedule 12.11.2014

Даниэль,

Я не знаком с ninja_forms, но, думая о javascript, вы можете инкапсулировать свой код, чтобы проверить, существуют ли пользователи в URL-адресе, а затем, делая вызов ajax, использовать его для проверки... Если вы не можете изменить запрос ajax , вы можете проверить поле в его событии размытия и отключить кнопку отправки, пока оно не будет помечено как «успешное».

Чтобы вы могли создавать файлы PHP и при этом использовать всю мощь и функциональность Wordpress, вы можете просто включить этот файл в начало файла, который будет называться require(wp-blog-header.php).

person Renato Reis    schedule 11.11.2014