Enviar correo electrónico automático al usuario después de wp_create_user
Aquí hay un código que desarrollé -- Funciona, pero ahora necesito que envíe automáticamente el nombre de usuario y la contraseña generada a esa dirección de correo electrónico. Además, el nombre y apellido no se están guardando. ¡¡Gracias!!
require('wordpress/wp-blog-header.php');
// Obtener el correo electrónico y nombre del usuario desde POST
$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 = __('El usuario ya existe. Contraseña heredada.');
}

"Esta respuesta fue marcada automáticamente como de baja calidad debido a su longitud y contenido", lo cual estoy seguro que no deseas. Por favor explica tu respuesta, en lugar de simplemente publicar código.

Más información sobre esto: http://codex.wordpress.org/Function_Reference/wp_new_user_notification
Notificar al administrador del blog sobre un nuevo usuario, normalmente por correo electrónico, y también enviar un email con los datos de acceso al nuevo usuario.

Existe el hook user_register
, que se ejecuta al final de la inserción del usuario y tiene $user_id como parámetro, podrías aprovecharlo para enviar el nombre de usuario y contraseña, pero primero tendrías que usar update_user_meta()
antes de poder obtener el nombre y otros datos, por lo que quizás sea mejor hacerlo al final de la creación del usuario y la inserción de metadatos.
Lo único que hace la creación de un usuario es insertarlo en la base de datos, necesitas usar update_user_meta()
para añadir los valores del usuario. get_the_author_meta()
tiene una lista de los valores de metadatos de usuario por defecto, si insertas algo con la clave de uno de esos, aparecerá en profile.php
por defecto, de lo contrario tendrás que extender el perfil de usuario para mostrarlo.
También, solo como nota, parece que estás estableciendo $random_password
a un valor no aleatorio y además, probablemente más importante, lo estás estableciendo DESPUÉS de que haya sido usado.

Yo usaría wp_insert_user en lugar de wp_create_user para poder añadir tantos datos de usuario como desees desde el principio. Revisa el codex de WordPress para ver todo lo que puedes insertar. (¡wp_create_user simplemente llama a esta función de todos modos!) Para enviar los detalles de inicio de sesión del usuario puedes llamar a wp_mail($user_email, $subject, $message); Por supuesto, querrás configurar $message para que incluya el nombre de usuario y contraseña en el cuerpo del texto del mensaje. Otra cosa, creo que puedes crear la función wp_new_user_notification que es una función "pluggable" y se llama en el registro de nuevos usuarios, puedes poner la función de correo ahí, sé que plugins como Register Plus Redux y Pie Register lo hacen de esta manera.

Creo que esto es lo que estás buscando. Esto agregará el nombre y apellido a los metadatos del usuario y enviará un correo al usuario sobre la adición de su nombre y apellido.
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, 'Nombre y apellido del usuario', sprintf('Hola, hemos agregado tu nombre: %s y apellido: %s a nuestro sitio.', $_POST['first_name'], $_POST['last_name']));
}
