Implementar verificación de email al registro de usuarios en WordPress
Cuando gestionas un sitio web con usuarios registrados, es crucial asegurarte de que las direcciones de correo electrónico proporcionadas sean válidas. Implementar un proceso de verificación de correo electrónico puede ayudarte a evitar cuentas falsas y asegurar la autenticidad de tus usuarios. En este artículo, te mostraremos cómo añadir un proceso de verificación de correo electrónico en WordPress.
1) Preparar el entorno
Antes de comenzar, asegúrate de tener acceso al archivo functions.php
de tu tema o de trabajar a través de un plugin personalizado para evitar problemas durante las actualizaciones del tema.
2) Modificar el proceso de registro
Debemos enganchar una función personalizada al proceso de registro de WordPress para enviar un correo electrónico de verificación. Añadiremos un campo adicional en la base de datos para indicar si el usuario ha verificado su correo.
i. Añadir un campo de verificación en la base de datos:
<?php function add_user_verification_meta($user_id) { update_user_meta($user_id, 'is_email_verified', 0); } add_action('user_register', 'add_user_verification_meta');
ii. Enviar el correo electrónico de verificación:
<?php function send_verification_email($user_id) { $user = get_userdata($user_id); $email = $user->user_email; $verification_code = md5(time()); // Guardar el código de verificación en los metadatos del usuario update_user_meta($user_id, 'email_verification_code', $verification_code); // Crear el enlace de verificación $verification_link = add_query_arg( array( 'user_id' => $user_id, 'verification_code' => $verification_code ), home_url('/verify-email/') ); // Enviar el correo electrónico $subject = 'Verify Your Email Address'; $message = 'Please click the following link to verify your email address: ' . $verification_link; wp_mail($email, $subject, $message); } add_action('user_register', 'send_verification_email');
3) Crear la página de verificación
Necesitamos una página en la que el usuario pueda hacer clic en el enlace de verificación. Podemos usar una plantilla de página personalizada para manejar esto.
i. Crear la plantilla de página:
Crea un archivo page-verify-email.php
en el directorio de tu tema y agrega el siguiente código:
<?php /* Template Name: Verify Email */ get_header(); if (isset($_GET['user_id']) && isset($_GET['verification_code'])) { $user_id = intval($_GET['user_id']); $verification_code = sanitize_text_field($_GET['verification_code']); $stored_code = get_user_meta($user_id, 'email_verification_code', true); if ($verification_code === $stored_code) { update_user_meta($user_id, 'is_email_verified', 1); delete_user_meta($user_id, 'email_verification_code'); echo '<p>Your email has been successfully verified!</p>'; } else { echo '<p>Invalid verification code.</p>'; } } else { echo '<p>Invalid request.</p>'; } get_footer(); ?>
ii. Crear la página en WordPress:
Ve a Páginas > Añadir nueva en el panel de administración de WordPress y crea una nueva página llamada «Verify Email». Asigna la plantilla «Verify Email» a esta página desde el panel de atributos de página.
4) Restringir el acceso de usuarios no verificados
Por último, debemos asegurarnos de que los usuarios que no han verificado su correo electrónico no puedan acceder a ciertas áreas del sitio.
i. Añadir una función de verificación en el inicio de sesión:
<?php function restrict_unverified_users($user_login, $user) { $is_verified = get_user_meta($user->ID, 'is_email_verified', true); if ($is_verified != 1) { wp_logout(); wp_redirect(home_url('/verification-required/')); exit(); } } add_action('wp_login', 'restrict_unverified_users', 10, 2);
ii. Crear una página de aviso:
Crea una nueva página en el panel de administración de WordPress llamada «Verification Required» con un mensaje indicando que el usuario debe verificar su correo electrónico para acceder al sitio.
Implementar la verificación de correo electrónico en WordPress mejora la seguridad y la integridad de tu base de usuarios. Siguiendo estos pasos, puedes asegurarte de que solo los usuarios con direcciones de correo válidas puedan registrarse y acceder a tu sitio. ¡Esperamos que esta guía te haya sido útil!
Hola!
Yo he seguido todos los pasos y nada…
Cualquiera puede registrarse y no pide confirmación vía mail.
Antes de esto instalé el plugin «user-verification» pero tampoco funciona.
No sé si es Learnpress o estoy haciendo algo mal.
Hola Laura.
Primero tenes que verificar si tenes envío de email, es decir si cualquier email llega correctamente a su destinatario.
User verification es un excelente plugin.