检查是否存在用户电子邮件,如果不存在,请停止提交忍者表单

时间:2014-11-11 16:21:57

标签: wordpress forms survey

我有一个用忍者形式构建的表单,我使用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 。也许这不是正确的过滤器。 我希望你的勇敢帮助。 提前谢谢,丹尼尔

2 个答案:

答案 0 :(得分:3)

感谢你的帮助@Renato,我给你+1 :) 确实,我可以通过你告诉我的方式来做到这一点,但是我不想打破WordPress的api ,也就是说,这个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                
        }
    }
}

使用上面的代码一切正常! :) 谢谢!

答案 1 :(得分:1)

Daniel,

我不熟悉ninja_forms,但考虑到javascript,你可以封装你的代码来验证用户是否存在于url中,然后在进行ajax调用时,使用它来验证... 如果您无法更改ajax请求,则可以在其模糊事件上验证该字段并禁用提交按钮,直到它标记为“成功”

为了您创建PHP文件,然而,使用所有Wordpress的功能和功能,您只需将此文件包含在将被调用的文件的开头部分中 require(wp-blog-header.php)