Nous allons voir comment créer un utilisateur sous WordPress, sans passer par des plugins gratuits ou premium, l’idée est simple, il suffit de créer une page que vous pouvez nommer ‘Inscription’, lui associer un gabarit ‘Register’ par exemple, dans ce dernier, vous mettez votre formulaire et le code pour ajouter des utilisateurs.
Il existe deux fonctions pour créer des utilisateurs dans WordPress : wp_create_user et wp_insert_user. La première nous permet d’insérer un nouveau utilisateur dans la base de données WordPress. Alors que la 2eme permet de créer un utilisateur avec certains paramètres. Voici quelques exemples
$user_id = username_exists( $user_name ); if ( !$user_id and email_exists($user_email) == false ) { $random_password = wp_generate_password( 12, false ); $user_id = wp_create_user( $user_name, $random_password, $user_email ); } else { $random_password = __('User already exists. Password inherited.'); }
$website = "http://abetari.com" $userdata = array( 'user_pass' => $random_password, 'user_login' => $user_name, 'user_email' => $user_email, 'user_url' => $website, 'first_name' => 'Amine', 'last_name' => 'Betari', ); $user_id = wp_insert_user( $userdata ) ; //On success if( !is_wp_error($user_id) ) { echo "User created : ". $user_id; } ?>
Des fois, on veut ajouter d’autres données liés aux utilisateurs, le cas des champs personnalisés, dans ce cas il faut utiliser la puissance du WordPress, en exploitant la table wp_usermeta par l’utilisation des méthodes add_user_meta et update_user_meta. Voici un exemple qui se base sur le code ci-dessus.
$date = date('Y/m/d', time()); update_user_meta( $user_id , 'cne' , 'ae7878874' ); update_user_meta( $user_id , 'date', $date );
Jusqu’à présent nous avons vu comment insérer des utilisateurs dans la base de données du WordPress. Il reste de voir comment envoyer un mail à l’utilisateur qui vient de s’inscrire pour cela, on utilise la fonction wp_mail toujours on continue avec les exemples ci-dessus. Une fois l’ajout de l’utilisateur est OK, on peut envoyer un mail à l’utilisateur.
$user_id = wp_insert_user( $userdata ) ; if( !is_wp_error($user_id) ) { echo "User created : ". $user_id; $subject = 'Votre compte a été crée'; $message = 'Message contient les informations de l\'utilisateur, user_name , mot de passe, etc.'; $headers = 'Content-type: text/html'; wp_mail( $user_email, $subject, $message, $headers ); }
Notez SVP que la fonction wp_mail retourne un boolean (true ou bien false), la valeur true ne signifie pas que l’utilisateur a reçu un mail, mais signifie que la méthode a bien fait son traitement sans erreur.