将自定义数据插入wpUser

时间:2021-02-22 作者:Rusydi

我在我的wp_users 但行中的数据,如phone_noic_no. 但当我尝试添加数据时,数据不会传递到我的表中

这是我的密码

<?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 ( $_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\']);
if ( empty($phone) ) { 
echo \'<div class="col-12 register-error">Please enter a valid phone.</div>\';
$error = 1;
}
    
$error = 0; 
$icno = esc_sql($_REQUEST[\'icno\']);
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;
}

$username  = $_POST[\'username\'];
$password  = $_POST[\'password\'];
$email   = $_POST[\'email\'];
$phone   = $_POST[\'phone\'];
$icno   = $_POST[\'icno\'];   
$user_data = [
    \'user_login\' => $username,
    \'user_pass\'  => $password,
    \'user_email\'   => $email,
    \'phone_no\'   => $phone,
    \'ic_no\'   => $icno,
];
 
$user_id = wp_insert_user( $user_data );
 
// success
if ( ! is_wp_error( $user_id ) ) {
    echo \'User created: \';
}   
 
 else {
 echo \'Registration error\';
}
}
}
if ( $error != 2 ) { ?> 
<?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" 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="icno" 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 }
} 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>

https://codepen.io/rusydi-hakim/pen/GRNMxKY

enter image description here

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

切勿修改WordPress核心表架构,例如wp_users 在任何情况下。

The next time WordPress changes its tables, your custom columns will be destroyed, and all the data will be deleted. This is unavoidable.

相反,请使用用户元API和表:

检索用户元:

$phone = get_user_meta( $user_id, \'phone_number\', true );
添加/更新用户元:

update_user_meta( $user_id, \'phone_number\', \'0123-456-7890\' );
哪里$user_id 是用户的ID

永远不要修改表,而是使用函数将数据存储在元表中。

相关推荐

Reducing Database Query Time

在这里寻找一些建议。有一位客户已经在WooCommerce上工作了大约一年半。我们为他们建了一个新网站。他们开始增加一条新的家具生产线。每个项目有700-800个产品变体组合。由于从生产线中添加了大约8个新产品,当您在管理中查看产品列表时,加载需要花费很长时间。如果您快速编辑一个产品,并说将其添加到第二个类别,然后单击“更新”,则完成查询平均需要10.2-10.8秒(根据查询监视器)。意识到有700-800个变体需要迭代,如果可以理解的话,可能需要更长的时间。我已经恢复到2017主题,禁用了除woocom