Ich muss bei der Registrierung von WordPress automatisch Benutzernamen generieren. Ich habe ein benutzerdefiniertes Registrierungsformular eingerichtet und möchte den Benutzernamen in functions.php erstellen.
Kann mir jemand sagen, warum das nicht funktioniert? Es scheint, als sollte es nach dem Lesen des WordPress Codex auf angepassten Registrierungsformularen funktionieren ?
function register_hook ( $user_id ) {
update_user_meta( $user_id, 'signup_username', 'the-auto-generated-name' );
// also tried this:
// update_user_meta( $user_id, 'user_login', 'the-auto-generated-name' );
}
add_action( 'user_register', 'register_hook' );
Eine Alternative besteht darin, den $_POST['user_login']
-Eingabewert beim Absenden eines neuen Registrierungsformulars zu ändern, bevor WP das Registrierungsformular verarbeitet. Ein guter Haken, um dies zu erreichen, ist login_form_register
, der vor der Verarbeitung und dem Rendern des Registrierungsformulars ausgelöst wird. login_init
funktioniert ebenfalls, es ist jedoch mehr Arbeit erforderlich, um sicherzustellen, dass register
aktiv ist.
add_action('login_form_register', 'custom_user_login');
function custom_user_login() {
// make sure regisration form is submitted
if ($_SERVER['REQUEST_METHOD'] != 'POST')
return;
// base of user_login, change it according to ur needs
$ulogin = 'random-user';
// make user_login unique so WP will not return error
$check = username_exists($ulogin);
if (!empty($check)) {
$suffix = 2;
while (!empty($check)) {
$alt_ulogin = $ulogin . '-' . $suffix;
$check = username_exists($alt_ulogin);
$suffix++;
}
$ulogin = $alt_ulogin;
}
$_POST['user_login'] = $ulogin;
}
Sie können die Benutzeranmeldung über den Filter pre_user_login
ändern. Beachten Sie, dass dies ausgeführt wird, wenn der Benutzer erstellt oder aktualisiert wird.
function wpd_custom_user_login( $user_login ) {
$user_login = 'the-auto-generated-name';
return $user_login;
}
add_filter( 'pre_user_login' , 'wpd_custom_user_login' );