终极会员:在注册表中添加密码验证

问题描述 投票:0回答:1

我已使用最终会员提供的代码,尝试在注册表中添加密码验证:

add_action("um_submit_form_register","um_122221_submit_form_register");
function um_122221_submit_form_register( $post_form ){
    
    // Trigger error when the Passcode field is empty
    if(  isset( $post_form['user_passcode'] ) && empty( $post_form['user_passcode'] ) ){
        UM()->form()->add_error('user_passcode', __( 'Passcode field can\'t be blank.', 'ultimate-member' ) );
    }
     
    // Trigger error when the Passcode entered is incorrect
    if(  isset( $post_form['user_passcode'] ) && ! empty( $post_form['user_passcode'] ) && "Banana" !== $post_form['user_passcode'] ){
        UM()->form()->add_error('user_passcode', __( 'Passcode is incorrect.', 'ultimate-member' ) );
    } 

}

以上是在我的主题文件functions.php页面中输入的。

发生的情况是,如果用户正确输入了所有表单详细信息,但错误地输入了密码,则不会显示错误,用户会注册并发送到他们的新帐户页面。

但是,如果用户输入了所有表单详细信息,但又输入了错误的内容,例如将电子邮件留空,则表单将返回到屏幕,并显示“密码不正确”错误消息。

似乎只有当列表中存在另一个错误时才会触发密码不正确时的触发器。

不确定其他人是否遇到过这个问题?我不知道如何解决这个问题。 有什么想法可能是错的吗?

供参考,我使用的是终极会员版本2.8.6

wordpress validation registration ultimate-member passcode
1个回答
0
投票

我们需要在函数的开头添加一个

explicit check
,以确保无论其他错误如何,它都会处理
passcode validation
。这是需要使用的更新代码。

<?php
add_action( 'um_submit_form_register', 'um_122221_submit_form_register' );
function um_122221_submit_form_register( $post_form ){
    
    // Here we are checking for empty passcode.
    if ( empty( $post_form['user_passcode'] ) ) {
        UM()->form()->add_error( 'user_passcode', __( 'Passcode field can\'t be blank.', 'ultimate-member' ) );
    }

    // Here we are checking for incorrect passcode only if it's not empty.
    if ( ! empty( $post_form['user_passcode']) && 'Banana' !== $post_form['user_passcode'] ) {
        UM()->form()->add_error( 'user_passcode', __( 'Passcode is incorrect.', 'ultimate-member' ) );
    }

    // This code logic is a last resort to ensure all validations run.
    if ( UM()->form()->has_errors() ) {
        return;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.