将其他字段插入WordPress主题中的现有注册表单

时间:2018-01-11 22:31:26

标签: php mysql sql wordpress

我想在我的网站注册表单中添加额外字段,但是当我通过创建新帐户对其进行测试时,其余字段不会随注册一起更新。这只是电子邮件,用户名和密码,我添加了名字,姓氏和电话号码。我甚至为每个新字段添加了错误消息。

我该如何解决这个问题?我怀疑,我没有得到使用wp_insert_user。这是完整的注册码:

<?php
/**
 * Template name: Register Page
 *
 * Learn more: http://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Classiera
 * @since Classiera
 */

if ( is_user_logged_in() ) { 
    global $redux_demo; 
    $profile = $redux_demo['profile'];
    wp_redirect( $profile ); exit;
}

    global $user_ID, $user_identity, $user_level, $registerSuccess;
    global $redux_demo;
    $termsandcondition = $redux_demo['termsandcondition'];
    $classieraEmailVerify = $redux_demo['registor-email-verify'];
    $classieraSocialLogin = $redux_demo['classiera_social_login'];
    $login = $redux_demo['login'];
    $registerSuccess = "";
if (!$user_ID) {
    if($_POST){
        $message =  esc_html__( 'Your registration was successful. You can now login.', 'classiera' );

        $first = $wpdb->escape($_POST['first_name']);

        $last = $wpdb->escape($_POST['last_name']);

        $username = $wpdb->escape($_POST['username']);

        $user_phone = $wpdb->escape($_POST['phone']);

        $email = $wpdb->escape($_POST['email']);

        $password = $wpdb->escape($_POST['pwd']);

        $confirm_password = $wpdb->escape($_POST['confirm']);

        $remember = $wpdb->escape($_POST['remember']);

        $registerSuccess = 1;


        if(!empty($remember)) {         

            if(empty($username)) {                  
                    $message =  esc_html__( 'Username cannot be empty.', 'classiera' );
                    $registerSuccess = 0;
            }

            if(empty($first)) {                 
                    $message =  esc_html__( 'You must provide your Full Name to register.', 'classiera' );
                    $registerSuccess = 0;
            }


            if(empty($last)) {                  
                    $message =  esc_html__( 'You must provide your Full Name to register.', 'classiera' );
                    $registerSuccess = 0;
            }


            if(empty($user_phone)) {                    
                    $message =  esc_html__( 'You must provide your Phone Number to register.', 'classiera' );
                    $registerSuccess = 0;
            }



            if(isset($email)) {

                if (preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $email)){ 

                    wp_update_user( array ('ID' => $user_ID, 'user_email' => $email) ) ;

                }

                else {               
                $message =  esc_html__( 'Please enter a valid email address.', 'classiera' );
                }

                $registerSuccess = 0;

            }else{
                $registerSuccess = 0;
                $message =  esc_html__( 'Please enter a valid email address.', 'classiera' );
            }
            /*If Admin Turn Of Email Verification then this code will work*/
            if($classieraEmailVerify != 1){
                if($password) {

                    if (strlen($password) < 5 || strlen($password) > 25) {

                        $message =  esc_html__( 'Password must be 5 to 25 characters in length.', 'classiera' );
                        $registerSuccess = 0;

                    }elseif(isset($password) && $password != $confirm_password) {

                        $message =  esc_html__( 'Password Mismatch', 'classiera' );

                        $registerSuccess = 0;

                    }elseif ( isset($password) && !empty($password) ) {

                        $update = wp_set_password( $password, $user_ID );                       
                        $message =  esc_html__( 'Your registration was successful. You can now login.', 'classiera' );
                        $registerSuccess = 1;

                    }

                }
            }else{/*If Admin Turn Of Email Verification then this code will work*/
                $password = wp_generate_password( $length=12, $special_chars=false );
            }



            $status = wp_create_user( $username, $password, $email );
            if ( is_wp_error($status) ) {
                $registerSuccess = 0;

                $message =  esc_html__( 'Username or E-mail already exists. Please try another one.', 'classiera' );
            }else{

                classieraUserNotification( $email, $password, $username );          
                global $redux_demo; 
                $newUsernotification = $redux_demo['newusernotification'];  
                    if($newUsernotification == 1){
                        classieraNewUserNotifiy($email, $username); 
                    }

                $registerSuccess = 1;
            }

            /*If Turn OFF Email verification*/
            if($registerSuccess == 1 && $classieraEmailVerify != 1) {
                $login_data = array();
                $login_data['user_login'] = $username;
                $login_data['user_password'] = $password;
                $user_verify = wp_signon( $login_data, false );
                global $redux_demo; 
                $profile = $redux_demo['all-ads'];
                wp_redirect( $profile ); exit;

            }elseif($registerSuccess == 1) {                    
                $message =  esc_html__( 'Your registration was successful. Please check your E-mail for your login password.', 'classiera' );
            }

        }else{          
            $message =  esc_html__( 'You must agree with our Terms and Conditions to register.', 'classiera' );
            $registerSuccess = 0;
        }
    }

}

get_header(); ?>
<?php 
    $page = get_page($post->ID);
    $current_page_id = $page->ID;
?>
<section class="inner-page-content border-bottom top-pad-50">
    <div class="login-register login-register-v1">
        <div class="container">
            <div class="row">
                <div class="col-lg-10 col-md-11 col-sm-12 center-block">
                <?php if(get_option('users_can_register')) { ?>
                    <?php if($_POST){?>
                        <?php 
                        global $redux_demo;
                        $login = $redux_demo['login'];
                        if($registerSuccess == 1){
                            ?>
                            <div class="alert alert-success" role="alert">
                              <strong><?php esc_html_e('All is set!', 'classiera') ?></strong> <?php esc_html_e('You have been registered succesfully. Please check your E-mail for your login password.', 'classiera') ?> <a href="<?php echo $login; ?>" class="alert-link"><?php esc_html_e('Click here', 'classiera') ?></a> <?php esc_html_e('to login', 'classiera') ?>.
                            </div>
                            <?php
                        }else{
                            ?>
                            <div class="alert alert-danger" role="alert">
                              <strong><?php esc_html_e('Oh snap!', 'classiera') ?></strong> <?php echo $message; ?>
                            </div>
                            <?php
                        }
                        ?>
                    <?php } ?>
                    <div class="row">
                        <div class="col-lg-12">
                            <div class="classiera-login-register-heading border-bottom text-center">
                                <h3 class="text-uppercase"><?php the_title(); ?></h3>
                            </div>
                            <!--SocialLogin-->
                            <?php if($classieraSocialLogin == 1){?>
                            <div class="social-login border-bottom">
                                <h5 class="text-uppercase text-center">
                                    <?php esc_html_e('Login or Signup With Social Account', 'classiera') ?>
                                </h5>
                                <?php include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); ?>
                                <!--Nextend Facebook-->
                                <?php if(is_plugin_active( "nextend-facebook-connect/nextend-facebook-connect.php" )){?>
                                    <a class="loginSocialbtn fb" href="<?php echo get_site_url(); ?>/wp-login.php?loginFacebook=1" onclick="window.location = '<?php echo get_site_url(); ?>/wp-login.php?loginFacebook=1&redirect='+window.location.href; return false;"><i class="fa fa-facebook-f"></i><?php esc_html_e('Login with Facebook', 'classiera') ?></a>
                                <?php } ?>
                                <!--Nextend Twitter-->
                                <?php if(is_plugin_active( "nextend-twitter-connect/nextend-twitter-connect.php")){?>
                                    <a class="loginSocialbtn twitter" href="<?php echo get_site_url(); ?>/wp-login.php?loginTwitter=1" onclick="window.location = '<?php echo get_site_url(); ?>/wp-login.php?loginTwitter=1&redirect='+window.location.href; return false;"><i class="fa fa-twitter"></i><?php esc_html_e('Login with Twitter', 'classiera') ?></a>
                                <?php } ?>
                                <!--Nextend Google-->
                                <?php if(is_plugin_active( "nextend-google-connect/nextend-google-connect.php")){?>
                                    <a class="loginSocialbtn google" href="<?php echo get_site_url(); ?>/wp-login.php?loginGoogle=1" onclick="window.location = '<?php echo get_site_url(); ?>/wp-login.php?loginGoogle=1&redirect='+window.location.href; return false;"><i class="fa fa-google"></i><?php esc_html_e('Login with Google', 'classiera') ?></a>
                                <?php } ?>
                                <!--AccessPress Socil Login-->
                                <?php 
                                    if (is_plugin_active( "accesspress-social-login-lite/accesspress-social-login-lite.php" )){
                                        echo do_shortcode('[apsl-login-lite]');
                                    }
                                    if ( is_plugin_active( "accesspress-social-login/accesspress-social-login.php" )){
                                        echo do_shortcode('[apsl-login]');
                                    }
                                ?>
                                <!--AccessPress Socil Login-->
                                <div class="social-login-or">
                                    <span><?php esc_html_e('OR', 'classiera') ?></span>
                                </div>
                            </div>
                            <?php } ?>
                            <!--SocialLogin-->
                        </div><!--col-lg-12-->
                    </div><!--row-->
                    <div class="row">
                        <div class="col-lg-8 col-sm-11 col-md-9 center-block">
                            <form data-toggle="validator" role="form" id="myform" action="" method="POST" enctype="multipart/form-data">
                                <div class="form-group">
                                    <div class="row">
                                        <div class="col-lg-3 col-sm-3 single-label">
                                    <label for="first-name"><?php esc_html_e( 'First Name', 'classiera' ); ?>:</label>
                                    </div>
                                    <div class="col-lg-9 col-sm-9">
                                    <div class="inner-addon left-addon">
                                        <i class="left-addon form-icon fa fa-user-circle-o"></i>
                                        <input type="text" id="username" name="first_name" class="form-control form-control-md" placeholder="<?php esc_html_e( 'Enter Your First Name', 'classiera' ); ?>" data-error="<?php esc_html_e('Your name is required', 'classiera') ?>" required><div class="help-block with-errors"></div>
                                            </div>
                                    </div><!--Firstname-->
                            <div class="col-lg-3 col-sm-3 single-label">
                                    <label for="last-name"><?php esc_html_e( 'Last Name', 'classiera' ); ?>:</label>
                                    </div>
                                    <div class="col-lg-9 col-sm-9">
                                    <div class="inner-addon left-addon">
                                        <i class="left-addon form-icon fa fa-user-circle-o"></i>
                                        <input type="text" id="username" name="last_name" class="form-control form-control-md" placeholder="<?php esc_html_e( 'Enter Last Name', 'classiera' ); ?>" data-error="<?php esc_html_e('', 'classiera') ?>">
                                        <div class="help-block with-errors"></div>
                                            </div></div>
                                        </div></div><!--Last name-->
                                <!--Username-->
                                <div class="form-group">
                                    <div class="row">
                                        <div class="col-lg-3 col-sm-3 single-label">
                                            <label for="username"><?php esc_html_e('Username', 'classiera') ?>: 
                                                <span class="text-danger"></span>
                                            </label>
                                        </div>
                                        <div class="col-lg-9 col-sm-9">
                                            <div class="inner-addon left-addon">
                                                <i class="left-addon form-icon fa fa-user"></i>
                                                <input type="text" id="username" name="username" class="form-control form-control-md" placeholder="<?php esc_html_e('Enter Username', 'classiera') ?>" data-error="<?php esc_html_e('Username is required', 'classiera') ?>" required>
                                                <div class="help-block with-errors"></div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                <!--Username-->
                                <!--EmailAddress-->
                                <div class="form-group">
                                    <div class="row">
                                        <div class="col-lg-3 col-sm-3 single-label">
                                            <label for="email"><?php esc_html_e('Email Address', 'classiera') ?>: <span class="text-danger"></span></label>
                                        </div>
                                        <div class="col-lg-9 col-sm-9">
                                            <div class="inner-addon left-addon">
                                                <i class="left-addon form-icon fa fa-at"></i>
                                                <input id="email" type="email" name="email" class="form-control form-control-md sharp-edge" placeholder="<?php esc_html_e('example@example.com', 'classiera') ?>" data-error="<?php esc_html_e('Email is required', 'classiera') ?>" required>
                                                <div class="help-block with-errors"></div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                <!--EmailAddress-->
                                <div class="form-group">
                                    <div class="row">
                                    <div class="col-lg-3 col-sm-3 single-label">
                                    <label for="phone"><?php esc_html_e( 'Phone Number', 'classiera' ); ?>:</label>
                                    </div>
                                    <div class="col-lg-9 col-sm-9">
                                    <div class="inner-addon left-addon">
                                        <i class="left-addon form-icon fa fa-tablet"></i>
                                        <input type="tel" id="phone" class="form-control form-control-md" placeholder="<?php esc_html_e( 'Enter Your Phone No.', 'classiera' ); ?>" name="phone" data-error="<?php esc_html_e('Phone number is required', 'classiera') ?>" required>
                                    <div class="help-block with-errors"></div>
                                            </div></div>
                                </div></div><!--Phone Number-->
                                <!--Password-->
                                <?php if($classieraEmailVerify != 1){?>
                                <div class="form-group">
                                    <div class="row">
                                        <div class="col-lg-3 col-sm-3 single-label">
                                            <label for="registerPass"><?php esc_html_e('Password', 'classiera') ?>: <span class="text-danger"></span></label>
                                        </div>
                                        <div class="col-lg-9 col-sm-9">
                                            <div class="inner-addon left-addon">
                                                <i class="left-addon form-icon fa fa-lock"></i>
                                                <input type="password" name="pwd" data-minlength="5" class="form-control form-control-md sharp-edge" placeholder="<?php esc_html_e('Enter Password', 'classiera') ?>" id="registerPass" data-error="<?php esc_html_e('Password is required', 'classiera') ?>" required>
                                                <div class="help-block"><?php esc_html_e('Minimum of 5 characters.', 'classiera') ?></div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                <div class="form-group">
                                    <div class="row">
                                        <div class="col-lg-3 col-sm-3 single-label">
                                            <label for="confirmPass"><?php esc_html_e('Re-enter Password', 'classiera') ?>: <span class="text-danger"></span></label>
                                        </div>
                                        <div class="col-lg-9 col-sm-9">
                                            <div class="inner-addon left-addon">
                                                <i class="left-addon form-icon fa fa-lock"></i>
                                                <input id="confirmPass" type="password" name="confirm" class="form-control form-control-md sharp-edge" placeholder="<?php esc_html_e('Re-enter Password', 'classiera') ?>" data-match="#registerPass" data-match-error="<?php esc_html_e('Passowrd do not match', 'classiera') ?>" required>
                                                <div class="help-block with-errors"></div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                <?php } ?>
                                <!--Password-->
                                <!--terms-->
                                <div class="col-lg-9 col-sm-9 pull-right flip">
                                    <div class="form-group">
                                        <div class="checkbox">
                                            <input type="checkbox" name="remember" id="remember" value="forever" data-error="<?php esc_html_e('You must agree with our Terms and Conditions to register.', 'classiera') ?>" required>
                                            <label for="remember"><?php esc_html_e('I agree with the', 'classiera') ?> 
                                                <a target="_blank" href="<?php echo $termsandcondition; ?>">
                                                    <?php esc_html_e('Terms and Conditions', 'classiera') ?>
                                                </a>
                                            </label>
                                            <div class="left-side help-block with-errors"></div>
                                        </div>
                                    </div>                                  
                                    <div class="form-group">
                                        <input type="hidden" name="submit" value="Register" id="submit" />
                                        <button type="submit" name="op" class="btn btn-primary sharp btn-md btn-style-one"><?php esc_html_e('Register now', 'classiera') ?></button>
                                    </div>
                                    <div class="form-group">
                                        <p><?php esc_html_e('Already have an account?', 'classiera') ?> <a href="<?php echo $login; ?>"><?php esc_html_e('Login here', 'classiera') ?></a></p>
                                    </div>
                                </div>
                                <!--terms-->
                            </form>
                        </div><!--col-lg-8-->
                    </div><!--row-->
                <?php }else{?>
                    <div class="alert alert-info" role="alert">
                        <i class="fa fa-exclamation-triangle"></i>
                        <strong><?php esc_html_e('Registration!', 'classiera') ?></strong> : <?php esc_html_e( 'Registration is currently disabled for maintenance. Please try again later.', 'classiera' ); ?>
                    </div>
                <?php } ?>
                </div><!--col-lg-10-->
            </div><!--row-->
        </div><!--container-->
    </div><!--login-register-->
</section>
<?php get_footer(); ?>

然后我插入了这段代码(我没有在上面的代码中包含这些代码):

$user_ID->wp_insert_user( $first, $last, $user_phone );

在此代码下方:

$status = wp_create_user( $username, $password, $email );
            if ( is_wp_error($status) ) {
                $registerSuccess = 0;

1 个答案:

答案 0 :(得分:0)

经过多次尝试和错误后,我自己想出了解决方案。我只是更改了这行代码:

$status = wp_create_user( $username, $password, $email );

到此:

$status = wp_insert_user( array ('first_name' => $first, 'last_name' => $last, 'user_pass' => $password, 'user_login' => $username, 'user_email' => $email, 'phone' => $user_phone, 'role' => 'subscriber' ) );

工作正常!!