WordPress

wp_insert_user zawsze próbuje użyć tej samej nazwy użytkownika

  • 30 sierpnia, 2018
  • 3 min read
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.

Warto przeczytać!  opcje — Jak przekazać zmienną do wywołania zwrotnego add_settings_section()?

Nowy użytkownik utworzony z powyższego kodu

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.


Źródło