Enviar correo electrónico automático al usuario después de wp_create_user

29 ene 2012, 21:43:23
Vistas: 26.4K
Votos: 3

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.');
}
0
Todas las respuestas a la pregunta 4
2

Puedes usar esto: wp_new_user_notification( $user_id, $random_password);

16 jun 2013 05:26:40
Comentarios

"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.

s_ha_dum s_ha_dum
16 jun 2013 06:29:23

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.

bryceadams bryceadams
8 feb 2015 12:39:05
0

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.

29 ene 2012 22:01:31
0

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.

29 nov 2012 16:16:54
0

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']));
}
16 jun 2013 05:47:37