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!

5 1 vote
Article Rating
Subscribe
Notify of
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Laura

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.

Back to Top
2
0
Would love your thoughts, please comment.x
()
x