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' );
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;
}
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' );