wp_insert_user always tries the same user name
The page name with my form is "Register", which means the slug is "register". That is the first piece of info that is tied to my theory about my error.
When I run wp_insert_user I get a success the first time, but the user name is "register". So subsequent submissions try to create the user "register", so it errors out with a "User with that user name exists" error.
I've checked my data over and over again to verify that I'm not submitting a form with the user name "register", but it always tries with that user name.
Here's my code:
$first_name = $data['first_name'];
$last_name = $data['last_name'];
$user_name = $data['user_name'];
$type_of_user = $data['type_of_user'];
$nickname = $first_name . " " . $last_name;
$email = $data['email_address'];
$password = wp_generate_password();
$address1 = $data['address_1'];
$address2 = $data['address_2'];
$city = $data['city'];
$state = $data['state'];
$zipcode = $data['zipcode'];
$user_photo = $data['user_photo'];
$args = array (
'user_login' = $user_name,
'user_email' = $email,
'user_pass' = $password,
'user_url' = $website,
'first_name' = $first_name,
'last_name' = $last_name,
'nickname' = $nickname,
'role' = $type_of_user
) ;
$user_id = wp_insert_user($args);
Could something in the post loop be getting into my form and how do I fix it. I've tried troubleshooting this for awhile now, but I'm not sure what else to try.
EDIT 1: Next test case.
$username = "spock";
$password = wp_generate_password();
$email_address = "[email protected]";
if( null == username_exists( $username) ) {
// Generate the password and create the user
$password = wp_generate_password( 12, false );
$user_id = wp_create_user( $username, $password, $email_address );
if ( $user_id !is_wp_error( $user_id ) ) {
// Set the nickname
wp_update_user(
array(
'ID' = $user_id,
'nickname' = $email_address
)
);
// Set the role
$user = new WP_User( $user_id );
$user-set_role( 'contributor' );
// Email the user
wp_mail( $email_address, 'Welcome!', 'Your Password: ' . $password );
} else {
wp_mail("[email protected]", "User Reg Error", "Username attempted: " . $username . " . and Error: " . $user_id-get_error_message() . json_encode($user_id));
}
} // end if
This code creates the following on the first run.
And then on the next run returns the error of "Sorry, that username already exists!", since it tries to create a user with the username "register" again.
EDIT 2: The Workaround (still need an answer)
The workaround is that I just let it create the user name "register" and then quickly update the user name with the supplied user, but there's no reason why it would be using this user name. Could something be filtering the wp_insert_user function? Is there a WP hook that filters that?
EDIT 3: Tried another page/page slug
I created a new page called "test" with the slug "test" and got the same error so it has nothing to do with that.