Unfortunately I have been trying to figure out what is wrong with my code all day. I’m new to php so please forgive me if the answer is obvious. Also, if more information is needed, let me know.
The following code is the registration page template for the WordPress website I am creating. The goal was to add a custom phone number field to the form and have the number sent to the database. First, I created a new column in phpmyadmin called user_phone. Then I attempted to add the field to the code. Currently, once the new user fills out all of the info needed and hits submit, the user is redirected to the correct page and everything seems to go well. However, when I browse the users in phpmyadmin the phone number entered does not show up. Any help is appreciated!
<?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 . "rn";
$subject = "Registration successful";
$msg = "Registration successful.nYour login detailsnUsername: $usernamenPassword: $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(); ?>
EDIT 1: I changed wp_create_user to wp_insert_user and called in all of the fields. However, the phone number is still not being pushed to the database.
<?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 . "rn";
$subject = "Registration successful";
$msg = "Registration successful.nYour login detailsnUsername: $usernamenPassword: $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(); ?>
In the create user you don’t use phone number!
And
is incorrect.
is correct.
By the way WP Codex (http://codex.wordpress.org/Function_Reference/wp_insert_user)
says that you cannot use phone in wp_insert_user(). The page shows a list what you can use.