Inviare email automatica all'utente dopo wp_create_user
Ho creato questo codice che funziona, ma ora ho bisogno che invii automaticamente username e password generata a quell'indirizzo email. Inoltre nome e cognome non vengono registrati. Grazie!
require('wordpress/wp-blog-header.php');
// Ottiene email e nome utente dal form
$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 = __('Utente già esistente. Password ereditata.');
}

"Questa risposta è stata automaticamente contrassegnata come di bassa qualità a causa della sua lunghezza e contenuto", cosa che sono sicuro non desideri. Per favore, spiega la tua risposta, invece di limitarti a pubblicare del codice.

Ulteriori informazioni su questo: http://codex.wordpress.org/Function_Reference/wp_new_user_notification
Notifica all'amministratore del blog un nuovo utente, normalmente via email, e invia anche un'email con login/password al nuovo utente.

Esiste l'hook user_register
, che viene eseguito alla fine dell'inserimento dell'utente e ha $user_id come parametro, potresti sfruttarlo per inviare username e password, ma devi prima usare update_user_meta()
per poter ottenere nome, cognome e altri dati, quindi potrebbe essere meglio farlo alla fine della creazione dell'utente e dell'inserimento dei metadati.
L'unica cosa che fa la creazione di un utente è inserirlo nel database, devi usare update_user_meta()
per aggiungere i valori dell'utente. get_the_author_meta()
contiene un elenco dei valori predefiniti dei metadati utente, se inserisci qualcosa con la chiave di uno di quelli, apparirà automaticamente in profile.php
, altrimenti dovrai estendere il profilo utente per visualizzarlo.
Inoltre, solo una nota, sembra che tu stia impostando $random_password
su un valore non casuale e, probabilmente ancora più importante, lo stai impostando DOPO che è stato utilizzato.

Userei wp_insert_user invece di wp_create_user così puoi aggiungere tutti i dati utente che desideri fin dal primo momento. Controlla il codex di Wordpress per vedere tutto ciò che puoi inserire. (wp_create_user in pratica richiama questa funzione comunque!) Per inviare i dettagli di accesso all'utente puoi chiamare wp_mail($user_email, $subject, $message); Ovviamente dovrai impostare $message in modo che includa username e password nel corpo del messaggio. Un'altra cosa, penso che tu possa creare la funzione wp_new_user_notification che è una funzione pluggable e viene chiamata alla registrazione di un nuovo utente, puoi inserire la funzione mail lì dentro, so che plugin come Register Plus Redux e Pie Register funzionano così.

Penso che questo sia quello che stai cercando. Questo aggiungerà il nome e il cognome ai metadati dell'utente e invierà una mail all'utente riguardo l'aggiunta del nome e cognome.
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('Ciao, abbiamo aggiunto il tuo nome :-% e cognome:- % al nostro sito.',$_POST['first_name'],$_POST['last_name']));
}
