wp_insert_user zawsze próbuje użyć tej samej nazwy użytkownika
Nazwa strony z moim formularzem to „Zarejestruj się”, co oznacza, że ślimak to „zarejestruj się”. To pierwsza informacja związana z moją teorią na temat mojego błędu.
Kiedy uruchamiam wp_insert_user, otrzymuję sukces za pierwszym razem, ale nazwa użytkownika to „register”. Dlatego kolejne zgłoszenia próbują utworzyć „rejestr” użytkownika, więc pojawia się błąd „Użytkownik o tej nazwie użytkownika istnieje”.
Wielokrotnie sprawdzałem swoje dane, aby sprawdzić, czy nie przesyłam formularza z nazwą użytkownika „zarejestruj się”, ale zawsze próbuje z tą nazwą użytkownika.
Oto mój kod:
$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);
Czy coś w pętli postów może dostać się do mojego formularza i jak to naprawić. Od jakiegoś czasu próbuję rozwiązać ten problem, ale nie wiem, co jeszcze mogę spróbować.
EDYCJA 1: Następny przypadek testowy.
$username = "spock";
$password = wp_generate_password();
$email_address = "spock@blah.com";
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("my@email.com", "User Reg Error", "Username attempted: " . $username . " . and Error: " . $user_id->get_error_message() . json_encode($user_id));
}
} // end if
Ten kod tworzy następujące elementy przy pierwszym uruchomieniu.
A potem przy następnym uruchomieniu zwraca błąd „Przepraszamy, ta nazwa użytkownika już istnieje!”, Ponieważ próbuje ponownie utworzyć użytkownika o nazwie użytkownika „register”.
EDYCJA 2: Obejście (nadal potrzebuję odpowiedzi)
Obejście polega na tym, że po prostu pozwoliłem mu utworzyć nazwę użytkownika „zarejestruj się”, a następnie szybko zaktualizować nazwę użytkownika za pomocą podanego użytkownika, ale nie ma powodu, dla którego miałby używać tej nazwy użytkownika. Czy coś może filtrować funkcję wp_insert_user? Czy istnieje hak WP, który to filtruje?
EDYCJA 3: Wypróbowałem inny ślimak strony/strony
Stworzyłem nową stronę o nazwie „test” ze ślimakiem „test” i otrzymałem ten sam błąd, więc nie ma to nic wspólnego z tym.