我在自定义注册表中添加了一些额外字段,如first\\u name、middle name、last\\u name等。我还想在DB中添加这些细节。现在,数据库中只插入用户名、电子邮件、显示名和user\\u nice name。如何将前端添加的额外字段添加到DB?
下面是我用来创建登录/注册/忘记页面的模板
<?php
/*
Template Name: Registration Template
*/
get_header();?>
<div id="login-register-password">
<?php global $user_ID, $user_identity; get_currentuserinfo(); if (!$user_ID) { ?>
<ul class="tabs_login">
<li class="active_login"><a href="#tab1_login">Login</a></li>
<li><a href="#tab2_login">Register</a></li>
<li><a href="#tab3_login">Forgot?</a></li>
</ul>
<div class="tab_container_login">
<div id="tab1_login" class="tab_content_login">
<?php $register = $_GET[\'register\']; $reset = $_GET[\'reset\']; if ($register == true) { ?>
<h3>Success!</h3>
<p>Check your email for the password and then return to log in.</p>
<?php } elseif ($reset == true) { ?>
<h3>Success!</h3>
<p>Check your email to reset your password.</p>
<?php } else { ?>
<?php } ?>
<form method="post" action="<?php bloginfo(\'url\') ?>/wp-login.php" class="wp-user-form">
<div class="username">
<label for="user_login"><?php _e(\'Username\');_e("/");_e("Email"); ?>: </label>
<input type="text" name="log" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" id="user_login" tabindex="11" />
</div>
<div class="password">
<label for="user_pass"><?php _e(\'Password\'); ?>: </label>
<input type="password" name="pwd" value="" size="20" id="user_pass" tabindex="12" />
</div>
<div class="login_fields">
<div class="rememberme">
<label for="rememberme">
<input type="checkbox" name="rememberme" value="forever" checked="checked" id="rememberme" tabindex="13" /> Remember me
</label>
</div>
<?php do_action(\'login_form\'); ?>
<input type="submit" name="user-submit" value="<?php _e(\'Login\'); ?>" tabindex="14" class="user-submit" />
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER[\'REQUEST_URI\']; ?>" />
<input type="hidden" name="user-cookie" value="1" />
</div>
</form>
</div>
<div id="tab2_login" class="tab_content_login" style="display:none;">
<h3>Sign Up</h3>
<p>We encourage you to do a one-time signup with us to be able to download content from this website</p>
<form method="post" action="<?php echo site_url(\'wp-login.php?action=register\', \'login_post\') ?>" class="wp-user-form">
<div class="username">
<label for="title"><?php _e(\'Title\'); ?>: </label>
<Select>
<option>Mr</option>
<option>Ms</option>
<option>Mrs</option>
</select>
</div>
<div class="username">
<label for="user_login"><?php _e(\'First Name\'); ?>: </label>
<input type="text" name="first_name" value="<?php echo esc_attr(stripslashes($first_name)); ?>" size="20" id="first_name" tabindex="101" required/>
</div>
<div class="username">
<label for="user_login"><?php _e(\'Middle Name\'); ?>: </label>
<input type="text" name="middle_name" value="<?php echo esc_attr(stripslashes($middle_name)); ?>" size="20" id="middle_name" tabindex="101" />
</div>
<div class="username">
<label for="user_login"><?php _e(\'Last Name\'); ?>: </label>
<input type="text" name="last_name" value="<?php echo esc_attr(stripslashes($last_name)); ?>" size="20" id="last_name" tabindex="101" required/>
</div>
<div class="username">
<label for="user_login"><?php _e(\'Username\'); ?>: </label>
<input type="text" name="user_login" value="<?php echo esc_attr(stripslashes($user_name)); ?>" size="20" id="user_login" tabindex="101" required />
</div>
<div class="password">
<label for="user_email"><?php _e(\'Email Address\'); ?>: </label>
<input type="text" name="user_email" value="<?php echo esc_attr(stripslashes($user_email)); ?>" size="25" id="user_email" tabindex="102" required/>
</div>
<div class="password">
<label for="organisation"><?php _e(\'Organisation\'); ?>: </label>
<input type="text" name="organisation" value="<?php echo esc_attr(stripslashes($user_org)); ?>" size="25" id="organisation" tabindex="102" />
</div>
<div class="password">
<label for="Designation"><?php _e(\'Designation\'); ?>: </label>
<input type="text" name="Designation" value="<?php echo esc_attr(stripslashes($user_desig)); ?>" size="25" id="designation" tabindex="102"/>
</div>
<div class="password">
<label for="Designation"><?php _e(\'Which Product are you interested in\'); ?>: </label>
<Select>
<option>COREDC</option>
<option>COREAE</option>
<option>COREQROPS</option>
<option>CORE Point Solutions</option>
<option>Just Exploring</option>
</select>
</div>
<div style="width:100px;position:relative;float:left;margin: 7px 0 0 0;">
<input type="button" name="user-cancel" value="<?php _e(\'Cancel\'); ?>" id="user-cancel" tabindex="103" />
</div>
<div class="login_fields">
<?php do_action(\'register_form\'); ?>
<input type="submit" name="user-submit" value="<?php _e(\'Sign up!\'); ?>" class="user-signup" tabindex="103" />
<?php $register = $_GET[\'register\']; if($register == true) { echo \'<p>Check your email for the password!</p>\'; } ?>
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER[\'REQUEST_URI\']; ?>?register=true" />
<input type="hidden" name="user-cookie" value="1" />
</div>
</form>
</div>
<div id="tab3_login" class="tab_content_login" style="display:none;">
<h3>Lose something?</h3>
<p>Enter your username or email to reset your password.</p>
<form method="post" action="<?php echo site_url(\'wp-login.php?action=lostpassword\', \'login_post\') ?>" class="wp-user-form">
<div class="username">
<label for="user_login" class="hide"><?php _e(\'Username or Email\'); ?>: </label>
<input type="text" name="user_login" value="" size="20" id="user_login" tabindex="1001" />
</div>
<div class="login_fields">
<?php do_action(\'login_form\', \'resetpass\'); ?>
<input type="submit" name="user-submit" value="<?php _e(\'Reset my password\'); ?>" class="user-submit" tabindex="1002" />
<?php $reset = $_GET[\'reset\']; if($reset == true) { echo \'<p>A message will be sent to your email address.</p>\'; } ?>
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER[\'REQUEST_URI\']; ?>?reset=true" />
<input type="hidden" name="user-cookie" value="1" />
</div>
</form>
</div>
</div>
<?php } else { // is logged in ?>
<div class="sidebox">
<h3>Welcome, <?php echo $user_identity; ?></h3>
<div class="usericon">
<?php global $userdata; get_currentuserinfo(); echo get_avatar($userdata->ID, 60); ?>
</div>
<div class="userinfo">
<p>You’re logged in as <strong><?php echo $user_identity; ?></strong></p>
<p>
<a href="<?php echo wp_logout_url(\'index.php\'); ?>">Log out</a> |
<?php if (current_user_can(\'manage_options\')) {
echo \'<a href="\' . admin_url() . \'">\' . __(\'Admin\') . \'</a>\'; } else {
echo \'<a href="\' . admin_url() . \'profile.php">\' . __(\'Profile\') . \'</a>\'; } ?>
</p>
</div>
</div>
<?php } ?>
</div>
<?php get_footer(); ?>
SO网友:montrealist
为什么反对使用用户元?我就是这样做的,我把所有额外的个人资料都存储在wp_usermeta
利用表格update_user_meta
.
<?php
// first validate all $_POST data
$validated = $this->validate_and_sanitize();
$username = $validated[\'uname\'];
$password = $validated[\'pass\'];
$email = $validated[\'email\'];
$new_user_id = wp_create_user($username, $password, $email);
if ( is_wp_error($new_user_id) && array_key_exists(\'existing_user_login\', $new_user_id->errors)) {
$return[\'status\'] = 2; // email entered is already in use
$return[\'msg\'] = \'Email entered is already in use\';
echo json_encode($return);
exit;
}
if( !is_wp_error($new_user_id) ) {
if (isset( $validated[\'phone\'] ) && strlen(trim($phone)) > 0) {
$phone = mysql_real_escape_string($validated[\'phone\']);
$umeta_id_phone = update_user_meta( $new_user_id, \'phone\', $phone );
}
if (isset( $validated[\'phone\'] ) && strlen(trim($city)) > 0) {
$city = mysql_real_escape_string($validated[\'city\']);
$umeta_id_city = update_user_meta( $new_user_id, \'city\', $city );
}
}