6 Stimmen

wordpress wp_insert_user Funktion

Ich bin gerade dabei, ein benutzerdefiniertes Registrierungsformular für WordPress zu erstellen.
Mein Problem ist das Hinzufügen von benutzerdefinierten Metadaten. Ich glaube, die Funktion wp_insert_user erlaubt es Ihnen nur, die Standardfelder in der WordPress-Benutzertabelle hinzuzufügen.

Hier ist mein aktueller Testcode:

$username = '12344';
$password = '1111';
$user_data = array(
'ID' => '',
'user_pass' => $password,
'user_login' => $username,
'display_name' => $loginName,
'first_name' => $firstName,
'last_name' => $lastName,
'role' => get_option('default_role') ,
'user_secondry_email' => 'test@tst.com'// Use default role or another role, e.g. 'editor'
);
$user_id = wp_insert_user( $user_data );
wp_hash_password( $password );

Ich habe die add_user_meta Funktion, die jedoch eine ID benötigt, um die Metadaten hinzuzufügen. Offensichtlich ist der Benutzer noch nicht erstellt worden, so dass er keine ID hat. Gibt es eine Idee, wie man das umgehen kann?

Danke, Dan

7voto

Ricardo Rodriguez Punkte 939

Denn was ich aus der Wordpress-Dokumentation die ID Feld ist fakultativ.

Wenn er vorhanden ist, wird der Benutzer aktualisiert, wenn nicht, wird er erstellt und die ID des neuen Benutzers wird von der Funktion zurückgegeben.

6voto

Ryan S Punkte 5608

Wenn ich Ihr Problem richtig verstehe, möchten Sie neue user_meta zum aktuell registrierten Benutzer hinzufügen.

Ich habe es folgendermaßen gemacht.

// this code insert the user, same on your code above just remove the ID field :)
$new_userid = wp_insert_user( $user_data );

$is_success = add_user_meta( $new_userid, 'position', 'programmer', true );
if( $is_success  ) {
   echo 'Successfully added';
} else {
   echo 'Error on user creation';
}

**NOTE:**
$new_userid = Is the return value from adding our new user and use that ID in adding new user meta

Ich hoffe, dies hilft anderen Benutzern, die nach derselben Lösung suchen.

2voto

Ali Haider Punkte 1

Nach eingehender Prüfung habe ich festgestellt, dass dieses Skript einwandfrei funktioniert. Entfernen Sie die get_option-Funktion und diese

$user_data = array(
    'user_login' => $username,
    'user_email' => $email,
    'first_name' => $firstname,
    'last_name' => $lastname,
    'display_name' => $firstname.' '.$lastname,
    'user_pass' => $u_password,
    'role' => 'administrator'
);
$result = wp_insert_user($user_data);

0voto

rprasad Punkte 336

Entfernen Sie den ID-Wert vollständig aus dem Array und es sollte funktionieren. (z.B. 'ID' => '' entfernen)

Ich glaube auch nicht, dass "user_secondary_email" ein zulässiges Feld für das neue Benutzer-Array ist. Die Feldliste ist hier: http://codex.wordpress.org/Function_Reference/wp_insert_user

(In Ihrem Beispiel fehlt bei "user_secondry_email" ein 'a')

Viel Glück!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X