wake-up-neo.net

Wie kann ich die WordPress-Registrierung überschreiben und einen automatisch generierten Benutzernamen eingeben?

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' );
1
user1462

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;
}
1
Ahmad M

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' );
1
Milo