Parece mentira pero, después de las semanas de locura previas a la entrada definitiva en vigor del RGPD (Reglamento General de Protección de Datos), de modificaciones en webs, adaptaciones de textos y formularios y demás cambios apresurados, aún quedan flecos que pulir.
Por ejemplo, el formulario de registro de WooCommerce. ¡Maldita sea! Ni habría pensado en este formulario si no me hubiera preguntado uno de mis clientes del servicio de mantenimiento. El cliente está dando su email, así que hay que adaptarlo. Es más, ¡está creando una cuenta de usuario! Toca informarle con detalle de lo que haremos con sus datos.
Tabla de contenidos
Cómo adaptar el formulario de registro de WooCommerce al RGPD
Para empezar, tengo que decir que quizá no necesites hacerlo: sólo te hace falta, evidentemente, si tienes habilitado este formulario en la web.
La opción la tienes en WooCommerce > Ajustes > Cuentas y Privacidad > Creación de cuenta > Permite a los clientes crear una cuenta en la página «Mi cuenta» si tienes WooCommerce actualizado a la versión 3.4+ o en WooCommerce > Ajustes > Cuentas > Registro de usuario > Permitir el alta como cliente en la página «Mi cuenta» si usas una versión anterior (si es el caso más te vale que vayas pensando en actualizar).
Si tienes activada esta opción los clientes podrán crear una cuenta de usuario desde la página Mi cuenta. Y claro, para ello tienen que dar obligatoriamente el email: ¡dato personal!
Pues nada, toca incluir, como siempre, la dichosa casilla de aceptación de la política de privacidad además de la información de la «primera capa», los datos básicos de privacidad que se aplican a dicho formulario: responsable del tratamiento, finalidad, legitimación, destinatarios… En fin, creo que ya sabes de qué va.
Añadir la casilla de aceptación
Lo primero y más básico será añadir la casilla (obligatoria) de aceptación de la política de privacidad. Y hay varias formas de hacerlo, en función de la aversión que tengas al código.
La primera forma es por código, haciendo uso del hook woocommerce_register_form para añadir un nuevo campo (nuestra casilla) mediante la función woocommerce_form_field.
Si todo esto te suena a chino, haremos algo mejor: darte el código completo. Que vendría a ser algo así:
add_action( 'woocommerce_register_form', function () { woocommerce_form_field( 'politica_privacidad_registro', array( 'type' => 'checkbox', 'class' => array('form-row rgpd'), 'label_class' => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'), 'input_class' => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'), 'required' => true, 'label' => 'He leído y acepto la política de privacidad', )); }, 10);
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
El texto que aparecerá junto a la casilla es el que está a la derecha del índice label. Por supuesto, deberías incluir el enlace a la política de privacidad. Si no sabes dónde tienes que poner ese código, puedes echarle un vistazo a este artículo:
Perfecto, ya aparece nuestra casilla. Pero, si haces la prueba, verás que se permite el registro aunque ésta no esté marcada. Claro, hemos añadido el checkbox pero no realizamos sobre él ninguna comprobación.
Hacer obligatoria la casilla de aceptación
Tal y como tenemos ahora mismo las cosas, esa casilla no sirve de nada, porque la cuenta se puede crear sin marcarla (es decir, el usuario podría estar dando datos personales sin aceptar nuestra política de privacidad).
Lo que tenemos que hacer es comprobar que la casilla está marcada antes de crear la cuenta y, si no es así, mostrar un error al usuario. Esto podemos hacerlo gracias al hook (filtro) woocommerce_registration_errors, mediante el que podemos mostrar un error si el usuario no ha marcado la casilla.
De nuevo, te doy el código:
add_filter( 'woocommerce_registration_errors', function ( $errores, $usuario, $email ) { if ( ! (int) isset( $_POST['politica_privacidad_registro'] ) ) { $errores->add( 'politica_privacidad_registro_error', 'Tienes que aceptar nuestra política de privacidad' ); } return $errores; }, 10, 3);
Y, ahora sí, está cada cosa en su sitio:
Añadir el texto básico de protección de datos
Bueno, en realidad aún queda un pequeño detalle: añadir el texto básico de la política de privacidad al formulario.
Para esto tenemos dos opciones. Por un lado la opción «cutre», de andar por casa, que es editar la página Mi cuenta y añadir el texto en el contenido de esta página, justo debajo del shortcode [woocommerce_my_account]
Digo que es cutre poco elegante porque así el texto quedará en realidad debajo del formulario de login, y no del de registro, lo que no es lo ideal (debe quedar claro que el texto aplica al formulario de registro).
La solución «buena» es, de nuevo, utilizar código para añadir este texto al final del formulario. Para ello podemos usar el hook woocommerce_register_form_end. De nuevo, aquí tienes el código:
add_action ('woocommerce_register_form_end', function () { echo 'Aquí iría el texto básico de privacidad'; }, 10);
Quedando, ahora sí, cada cosa donde debe estar (el texto legal es sólo un ejemplo):
Sí, es cierto: no queda muy elegante, pero ¿qué formulario ha quedado elegante después del RGPD? Esta maldit… ley se ha cargado el diseño de los formularios.
Adaptando al RGPD el formulario de registro de WooCommerce con un plugin
Demasiado código, ¿verdad? La buena noticia es que hay alternativa: puedes usar un plugin que te permitirá adaptar este formulario:
Mediante una sencilla página de ajustes (en Ajustes > RGPD en registro) podrás:
- Activar/desactivar la funcionalidad del plugin, mostrando o no la casilla de aceptación
- Ocultar el texto de privacidad estándar que añade WooCommerce por defecto a partir de su versión 3.4 (que, al ser estándar, no cumple con el RGPD, ya que este texto debe ser específico para cada formulario)
- Personalizar el mensaje que mostrará la casilla de aceptación de la política de privacidad
- Personalizar el mensaje de error que se mostrará cuando un cliente intente registrarse sin marcar esta casilla
- Añadir el texto (obligatorio) de las políticas que se aplican al formulario (lo que denominan la «información de primera capa»)
Como ves, con este sencillo plugin queda resuelta la adaptación al RGPD de este formulario de registro de WooCommerce. Uno más y sigue la cuenta.
Nacho dice
Como siempre Enrique, muy buen post y muy bien explicado. Haces que parezca fácil meterse en el código 😉
Pero tengo una duda, ¿si modificamos el código para que aparezca la casilla de verificación, cada vez que haya una actualización deberemos de volver a modificar?
Gracias de antemano, un saludo
Enrique J. Ros dice
Hola Nacho
No, si lo haces como debe hacerse. Echa un vistazo a esto.
Un saludo
Nacho dice
He seguido los pasos para crear un plugin, y añadido el código, pero no consigo hacer que aparezca la casilla de confirmación, me aparece todo el texto excepto la casilla, ¿le pasa a alguien más?. Puede que sea problema de mi theme.
Santiago dice
Hola Enrique,
aplicando el código que has facilitado, efectivamente, en el formulario de registro aparece la casilla de aceptación de la política de privacidad, pero cuando un cliente quiere registrarse en el momento de realizar la compra de un producto, aunque marque la casilla de aceptación de términos y condiciones, aparece el mensaje de error informando que tiene que aceptar la política de privacidad.
Un saludo.
Enrique J. Ros dice
Hola Santiago
Sí, el código da la funcionalidad básica. Puedes añadirle un condicional para evitar que se ejecute en el checkout.
Un saludo.
Emilio Martínez Castellón dice
Hola, he probado el codigo que has indicado, pero tengo un pequeño problema….me aparece el texto ‘He leído y acepto la política de privacidad’ muy pegado a la casilla de verificacion o check…como puedo modificar el codigo para dejar espacio entre este texto y el check para que no se solapen?
Gracias de antemano.
Enrique J. Ros dice
Hola Emilio
Ese tipo de cosas se hacen con CSS.
Un saludo,
Carlos dice
Genial explicación aunque al principio cueste a quienes no estamos familiarizados con esto de códigos. Personalmente, aunque me ha salido todo bien siguiendo tus explicaciones, hay momentos en que tenía dudas sobre si el código debía de añadirlo al plugin creado, al archivo de functions, a otro archivo propio de woocommerce… pero bueno, al final me he apañado y ha salido todo bien. Muchísimas gracias por compartir tu gran experiencia. Un saludo.
Miguel dice
Hola Enrique,
muy buen post. Me funciona todo pero me gustaría que se pudiera acceder a la política de privacidad desde un enlace, es decir que en el texto adjunto a la casilla de verificación, resalte «política de privacidad» y al hacer clic, redirija a la página (tal y como lo tienes tú en esta página).
Gracias
nataly dice
Una consulta al agregar esos cambios en el código, el marcado de la casilla se guarda en base de datos?
Enrique J. Ros dice
Hola Nataly
No, ese código no lo guarda en la base de datos. Para eso puedes usar este plugin, que sí lo hace (además de hacer también el resto de cosas que hace el código).
Un saludo
Lorena dice
Hola Enrique,
Lo primero, decirte que me encanta la información que compartes, ya que es de gran ayuda y haces que parezca fácil.
Lo segundo, tengo varios formularios que no son de woocommerce y me gustaría saber cómo los adapto igual a la RGPD.
Un saludo
Enrique J. Ros dice
Hola Lorena
Tienes que incluir la información básica de privacidad y la casilla de aceptación. La forma de hacerlo dependerá de con qué plugin hayas creado esos formularios. Contacta directamente con el soporte de los plugins en cuestión.
Un saludo
Caco Martín dice
Millones de gracias Enrique! Extremadamente útil tus indicaciones!