Bloquear cookies de WordPress antes de consentir
El plugin de Katla para WordPress bloquea cookies antes del consentimiento reteniendo scripts en el servidor, antes de enviar la página. El checkout no se toca.
La mayor parte del problema de cumplimiento con las cookies en la web vive en WordPress. Es también donde más banners de consentimiento hay instalados, y donde un número sorprendente de ellos no hace gran cosa.
Hemos publicado katla-app/wordpress, un plugin que conecta un sitio WordPress o WooCommerce con Katla. Carga el script de consentimiento, bloquea en el servidor los scripts y contenidos incrustados sin consentimiento, y muestra las políticas de cookies y de privacidad que Katla genera a partir de las cookies que realmente ha escaneado.
El problema de bloquear en el navegador
El bloqueador de cookies de Katla impide que las cookies se escriban. Esa es la primitiva correcta, y en un sitio hecho a mano suele bastar, porque tú controlas qué scripts hay en la página.
WordPress es distinto. Un tema encola un script. Tres plugins encolan cuatro más. Un constructor de páginas inyecta un píxel. Cuando un visitante carga la página, hay rastreadores que nadie añadió a propósito, y un rastreador que se carga ya ha hecho una petición a un tercero con una dirección IP y un referrer, haya conseguido o no escribir una cookie.
Bloquear eso en el navegador es una carrera que no siempre ganas. El script de consentimiento tiene que ejecutarse, parchear los globales correctos y neutralizar la etiqueta antes de que la etiqueta se ejecute. A veces lo consigue. Luego un plugin de optimización reordena tus scripts y deja de conseguirlo.
Así que bloquéalo antes de enviar la página
El plugin hace el bloqueo en el servidor, mientras WordPress todavía está montando el HTML. Asigna un handle de script a una categoría, en la pestaña Blocking o en código:
add_action( 'wp_enqueue_scripts', function () {
katla_block_script( 'google-analytics', 'analytics' );
katla_block_script( 'facebook-pixel', 'marketing' );
}, 20 );El script que llega al navegador es inerte:
<script type="text/plain" data-katla-src="…" data-katla-category="analytics"></script>No hay carrera, porque la versión ejecutable nunca existió en la respuesta.
El detalle que más nos importa es lo que pasa con los scripts inline. Las etiquetas de
analítica rara vez son un solo archivo: hay un cargador y, después, un gtag('config', …)
inline o un push al dataLayer asociado al mismo handle mediante wp_add_inline_script. Los
bloqueadores que solo gestionan el src suelen perderlos, y la etiqueta vuelve después del
consentimiento mal configurada o no vuelve. Este plugin neutraliza los scripts inline junto
con su handle y los reproduce en el orden del código fuente en cuanto se permite la
categoría, así que la etiqueta se restaura exactamente como la montó WordPress.
WooCommerce, donde romper cosas sale caro
Un plugin de consentimiento en una tienda tiene un segundo trabajo que importa tanto como el cumplimiento: no romper la tienda. Bloquea el handle equivocado y el carrito deja de actualizarse, o el checkout falla en silencio, y te enteras por un cliente.
Por eso, la integración con WooCommerce es sobre todo una lista de cosas que el plugin se
niega a hacer. Las cookies de carrito, sesión y checkout esquivan el bloqueador por completo:
woocommerce_cart_hash, wp_woocommerce_session_*, wc_fragments_* y compañía. Los handles
críticos para la tienda, como wc-cart-fragments, wc-checkout y wc-blocks-checkout, se
eliminan de la lista de bloqueados, así que una regla descuidada no puede tumbar el checkout.
El plugin declara compatibilidad con HPOS y con los bloques de carrito y checkout.
Una excepción deliberada: las cookies de atribución de pedidos (sbjs_*) no están en la
lista de permitidas. Son cookies de marketing: prácticas, pero de marketing. Si quieres que
desaparezcan antes del consentimiento, condiciona el handle wc-order-attribution.
Tres niveles de control
La opción por defecto no necesita código: Katla renderiza el banner y el diálogo de preferencias, con el estilo que configures en tu panel.
Si prefieres controlar el marcado, el modo headless carga el bloqueador y
window.KatlaConsent sin la interfaz alojada, y el plugin renderiza su propio banner,
traducido a través de WordPress y con estilos mediante propiedades personalizadas de CSS, para
que herede tu tema:
add_filter( 'katla_banner_css_vars', function () {
return array(
'katla-primary' => '#111111',
'katla-radius' => '0px',
'katla-font' => 'var(--wp--preset--font-family--body)',
);
} );O desactiva la interfaz por completo y construye la tuya sobre window.KatlaConsent y el
evento katla:consent. Por debajo, el mismo bloqueador en los tres casos.
Políticas que están de verdad en la página
[katla_policy] renderiza tu política de cookies y de privacidad generada en el servidor,
como parte del HTML de la página. Ni un iframe ni una petición desde el cliente: marcado real,
indexable, con los estilos de tu tema y regenerado a partir de tus cookies a medida que
cambian. Hay un bloque de Gutenberg para cada shortcode, además de [katla_cookie_table] si
solo quieres las tablas y [katla_cookie_settings] para el enlace de "gestionar preferencias"
que tu página de la política necesita de todos modos.
Primeros pasos
Necesitas un sitio de Katla verificado con al menos un escaneo completado: el plugin necesita datos de cookies para renderizar las políticas. Después:
wp plugin activate katla-consent
wp katla site-id 00000000-0000-0000-0000-000000000000
wp katla verifyO pega el ID del sitio en Settings → Katla Consent.
Atención
Deja la ubicación del script en Head y excluye cdn.katla.app del aplazamiento o la
combinación de JS en los plugins de optimización. El bloqueador de cookies tiene que
ejecutarse antes que cualquier cosa que escriba cookies: un bloqueador aplazado es la forma
más habitual de que un sitio WordPress acabe incumpliendo la normativa mientras parece
funcionar perfectamente.
La guía de WordPress cubre los shortcodes, los filtros, los comandos de WP-CLI y los detalles de WooCommerce, y la página de WordPress y WooCommerce tiene los pasos de configuración y las preguntas que se hacen los equipos de WordPress antes de cambiarse. El plugin está en GitHub en katla-app/wordpress: las issues y las pull requests son bienvenidas.