I got the undefined variable : user_id when i use get_user_meta
$phone = get_user_meta( $user_id, 'phone_no', true );
$icno = get_user_meta( $user_id, 'ic_no', true );
when i try put the above code below this line
$user_id = wp_insert_user( $user_data );
no error occur but my value $phone and $icno become empty
This is my full code
<?php
/*
Template Name: Register
*/
get_header();
// Exit if accessed directly
if ( !defined('ABSPATH')) exit;
?>
<html>
<body id="login-page" <?php body_class(); ?>>
<div class="container">
<div class="row register-page-container p-3 p-lg-5 mt-5 d-flex justify-content-center w-75 mx-auto">
<?php
global $wpdb, $user_ID;
//Check whether the user is already logged in
if (!$user_ID) {
// Default page shows register form.
// To show Login form set query variable action=login
$action = (isset($_GET['action']) ) ? $_GET['action'] : 0;
// Login Page
if ($action === "login") { ?>
<?php
$login = (isset($_GET['login']) ) ? $_GET['login'] : 0;
if ( $login === "failed" ) {
echo '<div class="col-12 register-error"><strong>ERROR:</strong> Invalid username and/or password.</div>';
} elseif ( $login === "empty" ) {
echo '<div class="col-12 register-error"><strong>ERROR:</strong> Username and/or Password is empty.</div>';
} elseif ( $login === "false" ) {
echo '<div class="col-12 register-error"><strong>ERROR:</strong> You are logged out.</div>';
}
?>
<div class="col-md-5">
<?php
$args = array(
'redirect' => home_url().'/login/',
);
wp_login_form($args); ?>
<p class="text-center"><a class="mr-2" href="<?php echo wp_registration_url(); ?>">Register Now</a>
<span clas="mx-2">·</span><a class="ml-2" href="<?php echo wp_lostpassword_url( ); ?>" title="Lost Password">Lost Password?</a></p>
</div>
<?php
} else { // Register Page ?>
<?php if(get_option('users_can_register')) { ?>
<div class="col-md-5 manual-register-form">
<form action="" method="post">
<p>
<label for="user_login">Username</label>
<input type="text" name="username" placeholder="Type your Username Here" class="register-input mb-4" value="<?php if( ! empty($username) ) echo $username; ?>" /><br />
</p>
<p>
<label for="user_password">Password</label>
<input type="password" name="password" placeholder="Type your Password Here" class="register-input mb-4" value="<?php if( ! empty($password) ) echo $password; ?>" /><br />
</p>
<p>
<label for="user_email">Email</label>
<input type="text" name="email" placeholder="Type your Email Here" class="register-input mb-4" value="<?php if( ! empty($email) ) echo $email; ?>" /> <br />
</p>
<p>
<label for="phone_no">Phone</label>
<input type="text" name="phone_no" placeholder="Type your Phone Here" class="register-input mb-4" value="<?php if( ! empty($phone) ) echo $phone; ?>" /> <br />
</p>
<p>
<label for="ic_no">IC No</label>
<input type="text" name="ic_no" placeholder="Type your IC No Here" class="register-input mb-4" value="<?php if( ! empty($icno) ) echo $icno; ?>" /> <br />
</p>
<input type="submit" id="register-submit-btn" class="mb-4" name="submit" value="SignUp" />
</form>
<p>Already have an account? <a href="/login">Login Here</a></p>
</div>
<?php } else {
echo "Registration is currently disabled. Please try again later.";
}
} ?>
<?php
if ( $_POST ) {
$error = 0;
$username = esc_sql($_REQUEST['username']);
if ( empty($username) ) {
echo '<div class="col-12 register-error">User name should not be empty.</div>';
$error = 1;
}
$email = esc_sql($_REQUEST['email']);
if ( !preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/", $email) ) {
echo '<div class="col-12 register-error">Please enter a valid email.</div>';
$error = 1;
}
$phone = esc_sql($_REQUEST['phone_no']);
if ( empty($phone) ) {
echo '<div class="col-12 register-error">Please enter a valid phone.</div>';
$error = 1;
}
$error = 0;
$icno = esc_sql($_REQUEST['ic_no']);
if ( empty($icno) ) {
echo '<div class="col-12 register-error">Please enter a valid IC No.</div>';
$error = 1;
}
if ( $error == 0 ) {
$password = esc_sql($_REQUEST['password']);
if ( empty($password) ) {
echo '<div class="col-12 register-error">Password should not be empty.</div>';
$error = 1;
}
$phone = get_user_meta( $user_id, 'phone_no', true );
$icno = get_user_meta( $user_id, 'ic_no', true );
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$icno = $_POST['ic_no'];
$phone = $_POST['phone_no'];
$user_data = [
'user_login' => $username,
'user_pass' => $password,
'user_email' => $email,
];
$user_id = wp_insert_user( $user_data );
update_user_meta( $user_id, 'phone_no', $phone );
update_user_meta( $user_id, 'ic_no', $icno );
// // success
if ( ! is_wp_error( $user_id ) ) {
echo 'User created: '. $user_id;
}
else {
echo 'Registration error';
}
}
}
if ( $error != 2 ) { ?>
<?php }
} else { ?>
<p>You are logged in. Click <a href="<?php bloginfo('wpurl'); ?>">here to go home</a></p>
<?php } ?>
</div>
</div>
<?php get_footer();
?>
</body>
</html>
$user_id
is indeed not defined before thoseget_user_meta()
calls. Only$user_ID
that got defined earlier in your code.