web-dev-qa-db-fra.com

Comment annuler l'inscription WordPress et insérer un nom d'utilisateur automatiquement?

J'ai besoin de générer automatiquement des noms d'utilisateur lors de l'enregistrement WordPress. J'ai un formulaire d'inscription personnalisé configuré et j'aimerais créer le nom d'utilisateur dans functions.php.

Quelqu'un peut-il me dire pourquoi cela ne fonctionne pas? Il semble que cela devrait fonctionner après la lecture du Codex WordPress sur des formulaires d’inscription personnalisés ?

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

Une solution consiste à modifier la valeur d'entrée $_POST['user_login'] lors de la soumission d'un nouveau formulaire d'inscription, c'est-à-dire avant que WP ne traite le formulaire d'inscription. Un bon crochet pour y parvenir est le login_form_register qui se déclenche avant le traitement et le rendu du formulaire d'enregistrement. login_init fonctionne aussi mais a besoin de plus de travail pour s'assurer que nous sommes sur l'action register.

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

Vous pouvez modifier la connexion de l'utilisateur via le filtre pre_user_login. Notez que ceci s’exécute lorsque l’utilisateur est créé ou mis à jour .

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