我正在创建一个使用用户名和电子邮件输入的自定义注册表,但当我包含名字和姓氏字段时,它不允许我注册。
以下是表格:
<form id="_wb_register" action="<?php echo home_url(); ?>" method="post">
<p>
<label for="_wb_register_username"><?php _e(\'Username:\', \'wb\'); ?></label>
<input type="text" name="username" id="_wb_register_username" />
</p>
<p>
<label for="_wb_register_user_first_name"><?php _e(\'First Name:\', \'wb\'); ?></label>
<input type="text" name="user_first_name" id="_wb_register_user_first_name" value="<?php echo esc_attr( wp_unslash( $first_name ) ); ?>" />
</p>
<p>
<label for="_wb_register_user_last_name"><?php _e(\'Last Name:\', \'wb\'); ?></label>
<input type="text" name="user_last_name" id="_wb_register_user_last_name" value="<?php echo esc_attr( wp_unslash( $last_name ) ); ?>" />
</p>
<p>
<label for="_wb_register_email"><?php _e(\'Email:\', \'wb\'); ?></label>
<input type="email" name="email" id="_wb_register_email" />
</p>
<div class="padding" style="height: 5px;"></div>
<?php do_action(\'wb_user_panel_registration_form_bottom\'); ?>
<p><input type="submit" value="<?php _e(\'Sign Up\', \'wb\'); ?>" class="button-primary" /></p>
</form>
以下是完成注册表后用于创建用户的函数:
add_action(\'wp_ajax__wb_register\', \'_wb_register_function\');
add_action(\'wp_ajax_nopriv__wb_register\', \'_wb_register_function\');
function _wb_register_function() {
$return = array();
$return[\'error\'] = false;
$return[\'message\'] = array();
//// VERIFIES NONCE
$nonce = isset($_POST[\'nonce\']) ? trim($_POST[\'nonce\']) : \'\';
if(!wp_verify_nonce($nonce, \'wb-register-nonce\'))
die(\'Busted!\');
//// VERIFIES CREDENTIALS
$username = isset($_POST[\'username\']) ? trim($_POST[\'username\']) : \'\';
$first_name = isset($_POST[\'user_first_name\']) ? trim($_POST[\'user_first_name\']) : \'\';
$last_name = isset($_POST[\'user_last_name\']) ? trim($_POST[\'user_last_name\']) : \'\';
$email = isset($_POST[\'email\']) ? trim($_POST[\'email\']) : \'\';
//// MAKES SURE USER HAS FILLED USERNAME AND EMAIL
if($email == \'\' || !is_email($email)) { $return[\'error\'] = true; $return[\'message\'] = __(\'Please type in a valid email address.\', \'wb\'); }
if($last_name == \'\') { $return[\'error\'] = true; $return[\'message\'] = __(\'Please enter your last name.\', \'wb\'); }
if($first_name == \'\') { $return[\'error\'] = true; $return[\'message\'] = __(\'Please enter your first name.\', \'wb\'); }
if($username == \'\') { $return[\'error\'] = true; $return[\'message\'] = __(\'Please choose an username.\', \'wb\'); }
///// IF USER HAS FILLED USER, PASS, FIRST AND LAST
if($return[\'error\'] == false) {
$return_registration = _wb_process_user_registration($return, $email, $username, $first_name, $last_name);
$return = $return_registration;
}
echo json_encode($return);
exit;
}
//////////////////////////////////////////////////////////////////////
///// THIS FUNCTION PROCESSES REGISTRATIONS
//////////////////////////////////////////////////////////////////////
function _wb_process_user_registration($return, $email, $username, $first_name, $last_name) {
//// CHECKS IF USERNAME EXISTS
$user = new WP_User(\'\', $username);
if(!$user->exists()) {
//// CHECK FOR USERNAMES EMAIL
$user = get_user_by(\'email\', $email);
if(!$user) {
$password = wp_generate_password();
//// NOW WE CAN FINALLY REGISTER THE USER
$args = array(
\'user_login\' => esc_attr($username),
\'first_name\' => $first_name,
\'last_name\' => $last_name,
\'user_email\' => $email,
\'user_pass\' => $password,
\'role\' => \'submitter\',
);
//// CREATES THE USER
$user = wp_insert_user($args);
if(!is_object($user)) {
//// MAKES SURE HE CAN"T SEE THE ADMIN BAR
update_user_meta($user, \'show_admin_bar_front\', \'false\');
$user = new WP_User($user);
当我提交注册表时,它会给我“请输入您的名字。”错误,因此至少该部分函数正在工作。我不明白为什么名字和姓氏没有被注册,而用户名和电子邮件工作正常。我有什么遗漏吗?