web-dev-qa-db-fra.com

Envoyer un email automatique à l'utilisateur après wp_create_user

Donc, voici un code que je suis venu avec - cela fonctionne, mais maintenant je dois lui envoyer le nom d'utilisateur et mot de passe qu'il a généré à cette adresse email automatiquement? De plus, le prénom et le nom de famille ne sont pas enregistrés? Merci!!

require('wordpress/wp-blog-header.php');

$user_email = trim(isset($_POST['payer_email']) ? $_POST['payer_email'] : "");
$user_name = trim(isset($_POST['first_name']) ? $_POST['first_name'] : "");

$user_id = username_exists( $user_name );
if ( !$user_id ) {
    $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.');
}
3
eberswine

Vous pouvez utiliser ceci: wp_new_user_notification( $user_id, $random_password);

5
user2407144

Il y a le hook user_register, qui fonctionne à la fin de l'insertion de l'utilisateur et dont le paramètre est $ user_id, vous pouvez en tirer parti pour envoyer le nom d'utilisateur et le mot de passe, mais vous devez update_user_meta() avant de pouvoir obtenir le nom et le contenu, il serait donc préférable de le faire à la fin de la création de l'utilisateur et de l'insertion de usermeta.

La seule chose qui crée un utilisateur est de l'insérer dans la base de données. Vous devez utiliser update_user_meta() pour ajouter les valeurs de l'utilisateur. get_the_author_meta() a une liste des valeurs usermeta par défaut. Si vous insérez quelque chose avec la clé d’une de celles-ci, il apparaîtra par défaut dans profile.php, sinon vous devrez étendre le profil de l’utilisateur pour l’afficher.

En outre, juste une remarque, il semblerait que vous ayez défini $random_password sur une valeur non aléatoire et que, ce qui est probablement plus important, que vous le définissiez APRÈS l’utilisation.

3
mor7ifer

Je voudrais utiliser wp_insert_user au lieu de wp_create_user afin que vous puissiez ajouter autant de données utilisateur que vous le souhaitez dans la première instance. Vérifiez le codex Wordpress pour tout ce que vous pouvez insérer. (wp_create_user appelle quand même cette fonction!) Pour envoyer les informations de connexion de l'utilisateur, vous pouvez appeler wp_mail ($ user_email, $ subject, $ message); Bien sûr, vous voudrez que $ message inclue le nom d'utilisateur et le mot de passe dans le corps du texte du message. Une autre chose, je pense que vous pouvez créer la fonction wp_new_user_notification qui est une fonction pluggable et appelée lors de l'enregistrement d'un nouvel utilisateur, vous pouvez mettre la fonction mail dans cette fonction.

0
Tony

Je pense que c'est ce que vous recherchez. Cela ajoutera le prénom et le nom à la méta de l'utilisateur et enverra un courrier à l'utilisateur à propos de l'ajout du prénom et du nom.

 add_action('user_register', 'add_user_custom_meta');

function add_user_custom_meta($user_id) {
    $user_info=get_userdata( $user_id );
if ( isset( $_POST['first_name'] ) )
    update_user_meta($user_id, 'first_name', $_POST['first_name']);

if ( isset( $_POST['last_name'] ) )
    update_user_meta($user_id, 'last_name', $_POST['last_name']);

wp_mail($user_info->user_email, 'User first and last name', sprintf('Hi we have added your first name :-% and last name:- % to our site.',$_POST['first_name'],$_POST['last_name']));
}
0
Vikas Bhardwaj