Hace poco, he tenido que instalar en un WordPress un plugin con el que solicitar el consentimiento expreso del usuario para la utilización de cookies en el portal, de acuerdo con la normativa europea. Dicho plugin ha sido Cookie Control, que por su sencillez se adecuaba bastante a las necesidades que tenía. Aunque si bien está ideado para la normativa de Reino Unido, como ésta es similar a la europea podemos usarlo perfectamente. Desgraciadamente por ahora no existe una traducción oficial al español, pero utiliza un inglés bastante asequible.
El caso es que una vez instalado y configurado a nuestro criterio, se debe seleccionar la opción estricta de mostrar el aviso. Esta opción hace que por defecto vengan desactivadas las cookies (cumpliendo la normativa) y sea el usuario quien, a través de un panel de aviso, tenga que activarlas. Dicho panel se muestra en cada una de las páginas del portal mientras no se activen las cookies. Para ocultarlo hay un checkbox debajo de la activación que permite no volver a mostrar el mensaje, quedando minimizado en una esquina. Aquí es donde aparece el problema cuando dicha casilla de verificación no funciona si se activa, dando lugar a que el mensaje no se oculte y si se recarga la página, vuelva a aparecer.
Esto se debe a un pequeño error de JavaScript en un condicional de la librería del plugin, de fácil solución si se sabe dónde hay que modificar, pero una locura en caso contrario. Como los archivos JS vienen comprimidos, la tarea de buscar el fallo se vuelve más complicada, así que hay que tirar de internet para saber qué ocurre.
En un grupo de Google encontré la solución al problema y espero que a vosotros también os sea útil. El primer paso será encontrar el trozo de código en el que se establece que si el checkbox está activado, el mensaje se debe ocultar.
jQuery("#cccwr #cchide-popup").click(function(g){
var f = jQuery(this).attr("checked");
var h = CookieControl;
if(f == true){
h.setCookie("ccNoPopup", "no");
jQuery("#cccwr .ccc-widget").fadeOut(CookieControl.options.clickFadeSpeed)
}else{
h.setCookie("ccNoPopup", "", true)
}
});
Hay que cambiar la condición dentro del if (f == true) del siguiente modo, debido a que la condición anterior jamás se cumplirá :
if(f){
[...]
Así, ya debería funcionar correctamente el checkbox y no volver a mostrar el mensaje a menos que el usuario lo maximice.
Os dejo el hilo original en el que encontré la solución, desde aquí un gran gracias a Egbert.
Deja una respuesta