Enviar email de activación después del registro de usuario
Me gustaría enviar un email a todos los usuarios inmediatamente después de registrarse que les requiera hacer clic en un enlace dentro de ese email para "activar" su dirección de correo electrónico.
Idealmente cada cuenta de usuario tendría un estado mostrando si este proceso se completó o no.
¿Alguien puede recomendar una forma de lograr esto?

Para el proceso de activación puedes seguir los siguientes pasos:
- Como puedes ver la columna
user_activation_key
en la tablawp_users
. Puedes hacer uso de esa columna para enviar el enlace de activación del usuario. Durante el registro de usuarios puedes insertar cierto código en esa columna con SQL personalizado. Después de que el usuario se registre con
wp_insert_user()
y devuelva un id a$user_id
, puedes ejecutar una inserción SQL personalizada$user_id = wp_insert_user($user_detail); if ( $user_id && !is_wp_error( $user_id ) ) { $code = sha1( $user_id . time() ); global $wpdb; $wpdb->update( 'wp_users', //nombre de la tabla array( 'user_activation_key' => $code, // cadena ), array( 'ID' => $user_id ), array( '%s', // valor1 ) ); $activation_link = add_query_arg( array( 'key' => $code, 'user' => $user_id ), get_permalink( /* tu ID de página de activación aquí*/ )); wp_mail( $user_email, 'ASUNTO', 'Enlace de activación : ' . $activation_link ); }.
Esto enviará al usuario un enlace de activación como
http://ejemplo.com/pagina-de-activacion/?key=CLAVE_ESPECIFICA&user=ID_USUARIO
a su correo electrónico y en la página de activación puedes ejecutar código para activar los usuarios alterando otra columnauser_status
de 0 a 1.Después de esto puedes ejecutar otra actualización para la columna
user_status
medianteglobal $wpdb; $wpdb->update( 'wp_users', //nombre de la tabla array( 'user_status' => 1, // entero ), array( 'ID' => $_GET['user'], //cláusula where 'user_activation_key'=>$_GET['key'] //cláusula where ), array( '%d', //valor1 ) );
Luego puedes permitir que los usuarios con estado 1 inicien sesión.
