php - 在用户注册中添加了自定义字段,但该字段不会将信息推送到数据库

标签 php mysql wordpress field

不幸的是,我整天都在试图找出我的代码有什么问题。我是 php 的新手,所以如果答案显而易见,请原谅我。另外,如果需要更多信息,请告诉我。

以下代码是我正在创建的 Wordpress 网站的注册页面模板。目标是向表单添加自定义电话号码字段并将号码发送到数据库。首先,我在 phpmyadmin 中创建了一个名为 user_phone 的新列。然后我尝试将该字段添加到代码中。目前,一旦新用户填写了所有需要的信息并点击提交,用户就会被重定向到正确的页面,一切似乎都很顺利。但是,当我在 phpmyadmin 中浏览用户时,输入的电话号码没有显示出来。感谢您的帮助!

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

if ( is_user_logged_in() ) { 

    global $redux_demo; 
    $profile = $redux_demo['profile'];
    wp_redirect( $profile ); exit;

}

global $user_ID, $user_identity, $user_level, $registerSuccess;

$registerSuccess = "";


if (!$user_ID) {

    if($_POST) 

    {

        $message = "Registration successful.";

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

        $email = $wpdb->escape($_POST['email']);
        /* PHONE NUMBER */
        $phone = $wpdb->escape($_POST['phone']);

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

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

        $registerSuccess = 1;

        $status = wp_create_user( $username, $password, $email );   
            if(empty($username)) {
                $message = "User name should not be empty.";
                $registerSuccess = 0;
            }elseif(empty($phone)) {
                $message = "Phone number should not be empty.";
            }
            elseif(isset($password) || isset($email)) {                     
                if (strlen($password) < 5 || strlen($password) > 15) {

                $message = "Password must be 5 to 15 characters in length.";

                $registerSuccess = 0;

                }

                //elseif( $password == $confirm_password ) {

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

                    $message = "Password Mismatch";

                    $registerSuccess = 0;

                }elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
                  {
                  $message = "Please enter a valid email.";
                  $registerSuccess = 0;              
                  } 

            }elseif(isset($email)) {
                if(!filter_var($email, FILTER_VALIDATE_EMAIL))
                  {
                  $message = "Please enter a valid email.";
                  $registerSuccess = 0;              
                  } 
            }elseif ( is_wp_error($status) ) {
                $registerSuccess = 0;
                $message = "Username or E-mail already exists. Please try another one.";
            }
             else {
                if($registerSuccess = 1){
                $from = get_option('admin_email');
                $headers = 'From: '.$from . "\r\n";
                $subject = "Registration successful";
                $msg = "Registration successful.\nYour login details\nUsername: $username\nPassword: $password";
                wp_mail( $email, $subject, $msg, $headers );

                $registerSuccess = 1;
                }
            }


        if($registerSuccess == 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['profile'];
            wp_redirect( $profile ); exit;

        }



    }

}

get_header(); ?>

    <div class="ad-title">

                <h2><?php the_title(); ?> </h2>     
    </div>

    <section class="ads-main-page">

        <div class="container">
            <div class="log-in-logo">
                <a class="logo" href="<?php echo home_url(); ?>" title="Home">
                    <?php global $redux_demo; $logo = $redux_demo['logo']['url']; if (!empty($logo)) { ?>
                        <img src="<?php echo $logo; ?>" alt="Logo" />
                    <?php } else { ?>
                        <img src="<?php echo get_template_directory_uri(); ?>/images/logo.png" alt="Logo" />
                    <?php } ?>
                </a>                
            </div>
            <div class="first clearfix log-in">

                <h2 class="login-title">REGISTER</h2> 
                <?php                   
                    if(get_option('users_can_register')) { //Check whether user registration is enabled by the administrator
                ?>

                <div id="edit-profile" class="clearfix" >

                    <div class="span4">
                        <form class="form-item login-form" action="" id="primaryPostForm" method="POST" enctype="multipart/form-data">

                                <?php if($_POST) { 

                                    global $redux_demo; 
                                    $login = $redux_demo['login'];

                                    echo "<div id='result' style='margin-bottom: 30px;'><div class='message'><h4>".$message." ";

                                    if($registerSuccess == 1) {
                                        echo "<a href='".$login."'>Login</a>.";
                                    }

                                    echo "</h4></div></div>";

                                } ?>

                                    <?php if($registerSuccess == 1) { } else { ?>




                                        <input id="contactName" placeholder="User Name" type="text" name="username" class="text input-textarea half" value="" maxlength="30" />

                                        <input id="phone" placeholder="Phone Number" type="text" name="phone" class="text input-textarea half" value="" maxlength="30" />


                                        <input id="email" placeholder="Email Address" type="text" name="email" class="text input-textarea half" value=""  maxlength="30" />


                                        <input id="password" placeholder="Password" type="password" name="pwd" class="text input-textarea half" maxlength="15"  value="" />


                                        <input id="password" placeholder="Retype Password" type="password" name="confirm" class="text input-textarea half" maxlength="15" value="" />



                                    <br/>


                                        <input type="hidden" name="submit" value="Register" id="submit" />
                                        <div class="clearfix"></div>
                                        <div class="btn-container"> 
                                            <button class="btn form-submit" id="edit-submit" name="op" value="Publish Ad" type="submit"><?php _e('Submit', 'agrg') ?></button>
                                        </div>


                                <?php } ?>

                        </form>


                        <div class="clearfix"></div>
                    </div>

                    <div class="span4 last">
                    <span>Already have an acount ?</span> <a class="login-a" href="">Login Now</a>




                        <div class="publish-ad-button login-page">

                            <?php

                                global $redux_demo; 
                                $login = $redux_demo['login'];
                                $reset = $redux_demo['reset'];

                            ?>



                        </div>

                    </div>

                </div>

                <?php }

                    else echo "<span class='registration-closed'>Registration is currently disabled. Please try again later.</span>";

                ?>

            </div>





        </div>

    </section>

<?php get_footer(); ?>

编辑 1:我将 wp_create_user 更改为 wp_insert_user 并调用了所有字段。但是,电话号码仍然没有被推送到数据库。

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

if ( is_user_logged_in() ) { 

    global $redux_demo; 
    $profile = $redux_demo['profile'];
    wp_redirect( $profile ); exit;

}

global $user_ID, $user_identity, $user_level, $registerSuccess;

$registerSuccess = "";


if (!$user_ID) {

    if($_POST) 

    {

        $message = "Registration successful.";

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

        $email = $wpdb->escape($_POST['email']);
        /* PHONE NUMBER */
        $phone = $wpdb->escape($_POST['phone']);

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

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

        $registerSuccess = 1;

        $userdata = array(
            'user_login'    =>  $username,
            'user_email'    =>  $email,
            'user_phone'    =>  $phone,
            'user_pass'    =>  $password,
        );

        $status = wp_insert_user( $userdata );  
            if(empty($username)) {
                $message = "User name should not be empty.";
                $registerSuccess = 0;
            }elseif(empty($phone)) {
                $message = "Phone number should not be empty.";
            }
            elseif(isset($password) || isset($email)) {                     
                if (strlen($password) < 5 || strlen($password) > 15) {

                $message = "Password must be 5 to 15 characters in length.";

                $registerSuccess = 0;

                }

                //elseif( $password == $confirm_password ) {

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

                    $message = "Password Mismatch";

                    $registerSuccess = 0;

                }elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
                  {
                  $message = "Please enter a valid email.";
                  $registerSuccess = 0;              
                  } 

            }elseif(isset($email)) {
                if(!filter_var($email, FILTER_VALIDATE_EMAIL))
                  {
                  $message = "Please enter a valid email.";
                  $registerSuccess = 0;              
                  } 
            }elseif ( is_wp_error($status) ) {
                $registerSuccess = 0;
                $message = "Username or E-mail already exists. Please try another one.";
            }
             else {
                if($registerSuccess == 1){
                $from = get_option('admin_email');
                $headers = 'From: '.$from . "\r\n";
                $subject = "Registration successful";
                $msg = "Registration successful.\nYour login details\nUsername: $username\nPassword: $password";
                wp_mail( $email, $subject, $msg, $headers );

                $registerSuccess = 1;
                }
            }


        if($registerSuccess == 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['profile'];
            wp_redirect( $profile ); exit;

        }



    }

}

get_header(); ?>

    <div class="ad-title">

                <h2><?php the_title(); ?> </h2>     
    </div>

    <section class="ads-main-page">

        <div class="container">
            <div class="log-in-logo">
                <a class="logo" href="<?php echo home_url(); ?>" title="Home">
                    <?php global $redux_demo; $logo = $redux_demo['logo']['url']; if (!empty($logo)) { ?>
                        <img src="<?php echo $logo; ?>" alt="Logo" />
                    <?php } else { ?>
                        <img src="<?php echo get_template_directory_uri(); ?>/images/logo.png" alt="Logo" />
                    <?php } ?>
                </a>                
            </div>
            <div class="first clearfix log-in">

                <h2 class="login-title">REGISTER</h2> 
                <?php                   
                    if(get_option('users_can_register')) { //Check whether user registration is enabled by the administrator
                ?>

                <div id="edit-profile" class="clearfix" >

                    <div class="span4">
                        <form class="form-item login-form" action="" id="primaryPostForm" method="POST" enctype="multipart/form-data">

                                <?php if($_POST) { 

                                    global $redux_demo; 
                                    $login = $redux_demo['login'];

                                    echo "<div id='result' style='margin-bottom: 30px;'><div class='message'><h4>".$message." ";

                                    if($registerSuccess == 1) {
                                        echo "<a href='".$login."'>Login</a>.";
                                    }

                                    echo "</h4></div></div>";

                                } ?>

                                    <?php if($registerSuccess == 1) { } else { ?>




                                        <input id="contactName" placeholder="User Name" type="text" name="username" class="text input-textarea half" value="" maxlength="30" />

                                        <input id="phone" placeholder="Phone Number" type="text" name="phone" class="text input-textarea half" value="" maxlength="30" />


                                        <input id="email" placeholder="Email Address" type="text" name="email" class="text input-textarea half" value=""  maxlength="30" />


                                        <input id="password" placeholder="Password" type="password" name="pwd" class="text input-textarea half" maxlength="15"  value="" />


                                        <input id="password" placeholder="Retype Password" type="password" name="confirm" class="text input-textarea half" maxlength="15" value="" />



                                    <br/>


                                        <input type="hidden" name="submit" value="Register" id="submit" />
                                        <div class="clearfix"></div>
                                        <div class="btn-container"> 
                                            <button class="btn form-submit" id="edit-submit" name="op" value="Publish Ad" type="submit"><?php _e('Submit', 'agrg') ?></button>
                                        </div>


                                <?php } ?>

                        </form>


                        <div class="clearfix"></div>
                    </div>

                    <div class="span4 last">
                    <span>Already have an acount ?</span> <a class="login-a" href="">Login Now</a>




                        <div class="publish-ad-button login-page">

                            <?php

                                global $redux_demo; 
                                $login = $redux_demo['login'];
                                $reset = $redux_demo['reset'];

                            ?>



                        </div>

                    </div>

                </div>

                <?php }

                    else echo "<span class='registration-closed'>Registration is currently disabled. Please try again later.</span>";

                ?>

            </div>





        </div>

    </section>

<?php get_footer(); ?>

最佳答案

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

在创建用户时你不使用电话号码! 和

if($registerSuccess = 1)

不正确。

if($registerSuccess == 1)

是正确的。

顺便说一下 WP Codex ( http://codex.wordpress.org/Function_Reference/wp_insert_user )

表示您不能在 wp_insert_user() 中使用电话。该页面显示了您可以使用的列表。

关于php - 在用户注册中添加了自定义字段,但该字段不会将信息推送到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32148441/

相关文章:

php - 使用jQuery发布时从函数获取数据

php - Codeigniter + WAMP 仅主页加载状态代码 200 OK

PHP 类型转换 - 好还是坏?

mysql - 寻找客户和他们的第一笔付款

mysql - 为什么我不能在 wordpress 中使用 CREATE 直接创建表

php - 如何创建对表单的自动更新响应

mysql - 选择 MySQL 中日期最高的行

php - 为什么所有的二维码图像都发送给用户,一个用户应该得到一张二维码图像

wordpress - 如何使背景图像加载更快

jquery - Wordpress 联系表格脱离 div