Skip to Content

Cookie Consent

Cookie Consent è un banner di consenso ai cookie per WordPress completamente personalizzabile e conforme a GDPR e CCPA. Dà ai visitatori pieno controllo sui cookie e sugli script di tracciamento che vengono eseguiti sul sito, organizza i cookie in categorie chiare, impedisce il caricamento degli script non essenziali senza approvazione e mantiene un log dei consensi a prova di manomissione per dimostrare la conformità in caso di audit.

Il plugin è leggero, privo di dipendenze sul frontend, è distribuito con un runtime in JavaScript vanilla e si integra con il plugin Polyglot in modo che i testi del banner vengano tradotti automaticamente per ogni lingua del sito.

Anteprima del banner di consenso ai cookie
Anteprima del banner di consenso ai cookie

Punti di forza

  • Consenso per categoria. I cookie sono raggruppati di base in tre categorie: Necessari (sempre attivi), Analitici (Google Analytics, Matomo, Hotjar, Mixpanel) e Marketing (Facebook Pixel, LinkedIn Insight, Google Ads).
  • Blocco automatico degli script. Aggiungi pattern URL per gli script che devono essere bloccati fino al consenso. Ogni pattern è mappato a una categoria e viene sbloccato automaticamente nel momento in cui il visitatore accetta.
  • Cinque posizioni del banner. Scegli tra Basso a sinistra, Basso a destra, Basso al centro, Alto e un Modal centrato.
  • Editor aspetto in tempo reale. Configura colori primario, sfondo e testo con uno swatch nativo + selettore hex, più un pulsante flottante opzionale per le impostazioni. Un’anteprima dal vivo mostra le modifiche prima del salvataggio.
  • Log e statistiche dei consensi. Ogni decisione di consenso viene memorizzata in una tabella dedicata. Una dashboard integrata mostra il totale dei consensi, i tassi di accettazione per categoria e una ripartizione giornaliera paginata.
  • Editor multilingua. Scegli la lingua da modificare da una tendina nelle schede Generale e Categorie e traduci ogni stringa visibile per locale. Con il plugin opzionale Polyglot installato, un pulsante Traduci con AI compila automaticamente qualunque lingua di destinazione partendo dalla sorgente.
  • Licenza e aggiornamenti integrati. Inserisci la tua chiave di licenza nella scheda Generale per abilitare gli aggiornamenti automatici in un click dal server di aggiornamento Slotix — senza dover caricare ZIP manualmente.
  • Durata cookie configurabile. Il cookie di consenso può essere impostato per scadere tra 1 e 730 giorni.
  • Developer friendly. API PHP e JavaScript più un evento DOM ccm:consent-updated ti permettono di integrarti con temi personalizzati, plugin e tag manager di terze parti.

Requisiti

ComponenteVersione minima
WordPress5.8 (testato fino a 7.0)
PHP7.4
MySQL5.7
MariaDB10.3

Il plugin funziona con qualsiasi tema moderno. Non sono richieste librerie aggiuntive, step di build o servizi esterni per far girare il banner frontend. Polyglot è opzionale; installalo solo se ti servono traduzioni multilingua dei testi del banner.

Installazione

  1. Scarica l’ultimo cookie-consent.zip dal portale plugin Slotix o dalla tua ricevuta d’acquisto.
  2. In WordPress, vai su Plugin → Aggiungi nuovo → Carica plugin.
  3. Seleziona il file ZIP e clicca Installa ora.
  4. Clicca Attiva plugin al termine dell’installazione.
  5. Apri Impostazioni → Cookie Consent per iniziare la configurazione. Su una installazione pulita il banner è attivo con default sensati, ma è bene rivedere ogni scheda prima di andare in produzione.

In alternativa, puoi caricare via SFTP la cartella cookie-consent scompattata in /wp-content/plugins/ e attivare il plugin da Plugin → Plugin installati.

Configurazione

La schermata delle impostazioni è suddivisa in cinque schede: Generale, Aspetto, Categorie, Blocco script e Statistiche. Al primo setup attraversale in ordine.

Generale

Scheda impostazioni Generale
Scheda impostazioni Generale

La scheda Generale è suddivisa in quattro card, dall’alto verso il basso: Licenza, il selettore Lingua di modifica, Testi del banner e Impostazioni globali.

Licenza. Incolla la chiave di licenza ricevuta nell’email di conferma d’acquisto — ad esempio PILOT-XXXX-XXXX-XXXX-XXXX. Clicca Verifica e salva; il plugin contatta il server di aggiornamento Slotix, valida la chiave rispetto al tuo dominio e abilita gli aggiornamenti automatici in un click dalla schermata Plugin di WordPress. Senza chiave il plugin continua a funzionare, ma dovrai caricare manualmente i nuovi ZIP a ogni release.

Lingua di modifica. Una tendina che elenca le lingue attualmente abilitate sul sito (di default Italiano, Inglese, Spagnolo, Francese e Tedesco). Ogni campo di testo sottostante è memorizzato per lingua — cambiando il selettore cambiano i valori visibili senza perdere gli altri. Se il plugin opzionale Polyglot è installato e attivo, accanto al selettore appare un pulsante Traduci con AI; cliccalo per compilare automaticamente la lingua di destinazione partendo dalla lingua sorgente.

Testi del banner. Testi mostrati ai visitatori. Ogni campo è localizzato secondo la lingua di modifica attiva.

  • Titolo banner — intestazione mostrata in cima al banner; default: “Rispettiamo la tua privacy”.
  • Descrizione banner — paragrafo esplicativo. Indica quali cookie imposti e linka l’informativa completa. La frase letterale “Privacy Policy” all’interno della descrizione viene convertita automaticamente in un link all’URL della privacy policy configurato.
  • Pulsante Accetta tutto — default: “Accetta tutto”. Iscrive il visitatore a tutte le categorie.
  • Pulsante Rifiuta tutto — default: “Rifiuta tutto”. Richiesto dal GDPR per essere altrettanto evidente di Accetta tutto.
  • Pulsante Impostazioni cookie — default: “Impostazioni cookie”. Apre il modal di consenso granulare dal banner.
  • Pulsante Accetta selezionati — default: “Accetta selezionati”. Mostrato nel modal; salva quanto il visitatore ha selezionato e chiude la finestra.

Impostazioni globali. Si applicano a tutte le lingue.

  • URL Privacy Policy — destinazione del link “Privacy Policy” inline nella descrizione del banner. Accetta un percorso relativo (/privacy-policy) o un URL completo. Lascia vuoto per nascondere il link.
  • Scadenza cookie — quanti giorni viene ricordata la decisione di consenso. Valori accettabili: da 1 a 730. La raccomandazione GDPR è 365 giorni; valori più alti riducono i ri-prompt ma possono essere segnalati da auditor severi.

Aspetto

Scheda impostazioni Aspetto
Scheda impostazioni Aspetto

La scheda Aspetto è organizzata in tre sezioni: Layout, Colori e Anteprima.

Layout.

  • Posizione banner — scegli Basso a sinistra, Basso a destra, Basso al centro, Barra in alto o Modal centrato. Il Modal centrato mostra una finestra centrata con uno sfondo che blocca l’interazione con la pagina fino alla decisione; usalo solo quando è richiesta conformità stretta, perché è più intrusivo.
  • Pulsante flottante — checkbox. Se attivo, una piccola icona resta ancorata nell’angolo della pagina così i visitatori possono riaprire le impostazioni di consenso in qualsiasi momento. Richiesto in alcune giurisdizioni (in particolare Italia e Francia).

Colori. Ogni riga abbina uno swatch nativo a un input hex — cliccando lo swatch si apre il selettore colore del sistema operativo e il valore hex resta sincronizzato con lo swatch nei due sensi.

  • Colore primario — usato per pulsanti e toggle nel modal. Scegli un colore che rispetti il contrasto WCAG AA contro testo bianco.
  • Colore di sfondo — sfondo di banner e modal. Default: bianco.
  • Colore del testo — testo principale. Default: grigio scuro.

Anteprima. Una miniatura dal vivo del banner si trova sotto le righe colore e si aggiorna in tempo reale al variare di titoli, descrizioni, etichette pulsanti e colori altrove nell’admin — così puoi verificare il risultato prima di salvare.

Categorie

Scheda impostazioni Categorie
Scheda impostazioni Categorie

Il plugin include tre categorie. Puoi rinominarle e modificarne le descrizioni per lingua. La categoria Necessari è sempre attiva e viene mostrata ai visitatori con un badge “Sempre attivi” invece di un toggle — non può essere disabilitata, né disattivata dal visitatore.

  • Necessari. Cookie richiesti per il funzionamento del sito — sessione, autenticazione, token di sicurezza, preferenza di lingua. Sempre attivi.
  • Analitici. Cookie statistici che misurano come i visitatori interagiscono con il sito. Esempi: _ga, _gid, _hjSession, mp_*.
  • Marketing. Cookie usati per tracciare i visitatori tra siti diversi a fini pubblicitari. Esempi: _fbp, fr, IDE, li_sugr.

Per ogni categoria non necessaria puoi modificare:

  • Nome — mostrato come titolo della categoria nel modal impostazioni. Localizzato per lingua di modifica.
  • Descrizione — mostrata sotto il titolo. Spiega in linguaggio semplice quali script controlla la categoria. Localizzata per lingua di modifica.
  • Abilitata di default — quando selezionata, il toggle parte in posizione ON quando un visitatore alla prima visita apre il modal (può comunque disattivarlo prima di cliccare Accetta selezionati). Quando deselezionata, il toggle parte OFF.

La scheda Categorie rispetta il selettore Lingua di modifica in alto, così puoi scrivere descrizioni italiane per il banner italiano e descrizioni inglesi per il banner inglese in modo indipendente. Le impostazioni strutturali (quali categorie esistono, se sono obbligatorie, il loro stato di default) sono globali e condivise tra lingue.

Blocco script

Scheda impostazioni Blocco script
Scheda impostazioni Blocco script

È qui che avviene la conformità. Senza blocco script il banner è decorativo — i visitatori possono rifiutare i cookie ma gli script di terze parti continueranno a caricarsi.

La scheda è suddivisa in un form Aggiungi nuovo pattern script in alto e due tabelle sotto, una per la categoria Analitici e una per Marketing.

Il form Aggiungi ha tre campi:

  • Nome — un’etichetta leggibile che appare nelle tabelle admin (es. “Google Analytics”). Non visibile ai visitatori.
  • Pattern URL — una sottostringa case-insensitive confrontata con l’attributo src di ogni script e con il corpo inline. Esempi: google-analytics.com, googletagmanager.com, connect.facebook.net, hotjar.com, linkedin.com/insight.
  • Categoria — Analitici o Marketing. Lo script viene caricato solo dopo l’opt-in del visitatore a quella categoria.

Ogni riga nelle tabelle Analitici / Marketing mostra Nome, Pattern, un toggle Stato per riga (abilita/disabilita senza eliminare) e un’azione Elimina. Il plugin include un set iniziale di pattern per le piattaforme di analytics e advertising più comuni; rivedilo ed estendilo in base alla tua effettiva configurazione di tag manager.

I pattern vengono confrontati a ogni caricamento di pagina. Gli script bloccati hanno l’attributo type riscritto a text/plain così il browser non li esegue. Quando il consenso viene concesso, il runtime individua i tag bloccati, ripristina type a text/javascript e li reinietta in modo che vengano eseguiti immediatamente senza ricaricare la pagina.

Statistiche

Dashboard Statistiche
Dashboard Statistiche

La scheda Statistiche è in sola lettura ed è organizzata in tre tile KPI in cima e una tabella Ripartizione giornaliera paginata sotto.

Tile KPI.

  • Consensi totali — ogni Accetta tutto, Rifiuta tutto o Accetta selezionati conta come un record.
  • Analitici accettati — visitatori totali che hanno fatto opt-in agli Analitici, con la percentuale di accettazione relativa ai Consensi totali.
  • Marketing accettati — uguale per Marketing.

Ripartizione giornaliera. Una tabella con una riga per ciascun giorno solare che ha registrato almeno una decisione di consenso, con Data, Totale, conteggi di accettazione Analitici e Marketing. La lista è ordinata dal più recente ed è paginata a 15 righe per pagina; usa i pulsanti di navigazione (« ») o digita direttamente un numero di pagina nell’input per saltare. L’angolo in alto a destra mostra il numero totale di giorni.

Usa questi numeri per stimare quanto del tuo traffico di analytics stai perdendo per i rifiuti di consenso e per dimostrare agli auditor che la raccolta del consenso funziona.

Utilizzo

Una volta configurato, il banner appare automaticamente alla prima visita e dopo la scadenza del cookie di consenso. Non sono richiesti shortcode o tag template.

Riaprire il modal delle impostazioni

Se il pulsante flottante è disabilitato, puoi aggiungere un link in qualunque punto del sito che permetta ai visitatori di riaprire le impostazioni. Usa un normale anchor con una classe:

<a href="#" class="ccm-open-settings">Preferenze cookie</a>

Qualsiasi elemento con la classe ccm-open-settings aprirà il modal di consenso al click. Utile per link nel footer e pagine account.

API PHP

Il codice server-side può fare branching sul consenso prima di emettere markup o caricare script:

if ( function_exists( 'cookie_consent' ) && cookie_consent()->public->has_consent( 'analytical' ) ) { wp_enqueue_script( 'my-analytics', 'https://example.com/analytics.js', array(), null, true ); }

Le categorie accettate da has_consent() sono gli slug della scheda Categorie: necessary, analytical, marketing, più eventuali slug personalizzati aggiunti.

API JavaScript

Il frontend espone un global CookieConsent con una API piccola e stabile:

// Controlla se il visitatore ha accettato una specifica categoria. CookieConsent.hasConsent('marketing'); // → true | false // Leggi l'oggetto consenso completo. CookieConsent.getConsent(); // → { necessary: true, analytical: true, marketing: false, ts: 1716000000 } // Apri il modal impostazioni in modo programmatico. CookieConsent.openSettings(); // Cancella la decisione salvata così il banner riappare. CookieConsent.resetConsent();

Evento di cambio consenso

Il runtime emette un evento DOM ogni volta che il consenso viene concesso, aggiornato o revocato. Mettiti in ascolto per pilotare integrazioni custom — ad esempio per spingere un evento dataLayer personalizzato in Google Tag Manager:

document.addEventListener('ccm:consent-updated', function (event) { const consent = event.detail; window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'cookie_consent_update', analytical: consent.analytical, marketing: consent.marketing, }); });

Il payload dell’evento rispecchia l’oggetto restituito da CookieConsent.getConsent().

Filter hook

Gli sviluppatori PHP possono modificare l’oggetto settings passato al runtime frontend con il filtro ccm_js_settings. Utile per sovrascrivere testi per lingua o per pagina senza toccare il database:

add_filter( 'ccm_js_settings', function ( $settings ) { if ( is_page( 'corporate' ) ) { $settings['title'] = __( 'Policy cookie aziendale', 'my-theme' ); } return $settings; } );

Tabelle del database

Al momento dell’attivazione il plugin crea due tabelle nel database WordPress:

  • {wp_prefix}ccm_consents — una riga per ogni decisione di consenso, con timestamp, IP hashato, user agent e le scelte booleane per categoria.
  • {wp_prefix}ccm_blocked_scripts — i pattern di blocco script configurati nell’admin.

Entrambe le tabelle vengono rimosse dal file uninstall.php incluso quando il plugin viene eliminato dall’interfaccia WordPress.

Screenshot

Le schermate seguenti illustrano un ciclo completo di configurazione.

Il banner di consenso cookie come lo vedono i visitatori
Il banner di consenso cookie come lo vedono i visitatori
Scheda Generale con testi banner e scadenza cookie
Scheda Generale con testi banner e scadenza cookie
Scheda Aspetto con anteprima dal vivo
Scheda Aspetto con anteprima dal vivo
Scheda Categorie con i tre gruppi di default
Scheda Categorie con i tre gruppi di default
Scheda Blocco script con pattern URL mappati alle categorie
Scheda Blocco script con pattern URL mappati alle categorie
Dashboard Statistiche con tassi di accettazione
Dashboard Statistiche con tassi di accettazione

FAQ

Il plugin è conforme al GDPR out of the box?

Il plugin fornisce tutti i primitivi tecnici richiesti per la conformità GDPR: consenso preventivo, categorie granulari, un pulsante di rifiuto altrettanto evidente, facile revoca del consenso e un log a prova di manomissione. La conformità è una proprietà di come configuri il plugin: devi comunque registrare ogni script di terze parti nella scheda Blocco script, scrivere una privacy policy accurata e linkarla dal banner.

Copre CCPA e altre leggi sulla privacy?

Lo stesso meccanismo — categorie granulari, blocco script e una finestra impostazioni riapribile — soddisfa il requisito CCPA “Do Not Sell”, il GDPR UK, l’LGPD brasiliana e la maggior parte delle altre leggi moderne sulla privacy. Per testi pulsanti specifici per regione puoi usare il filtro ccm_js_settings insieme a un plugin di geolocalizzazione, o affidarti a Polyglot per la variazione basata sulla lingua.

Rallenterà il mio sito?

No. Il runtime frontend è un singolo file JavaScript vanilla (circa 12 KB minificato, niente jQuery, niente dipendenze esterne) caricato con defer. Il banner viene renderizzato in un singolo passaggio DOM e non c’è alcuna chiamata remota durante il caricamento della pagina.

Funziona con i plugin di cache?

Sì. Il banner legge lo stato di consenso da un cookie first-party e renderizza interamente lato client, perciò è compatibile con cache di pagina complete (WP Rocket, LiteSpeed Cache, W3 Total Cache, Cloudflare APO). Assicurati che il cookie di consenso non venga rimosso dal tuo layer di cache.

Come si integra con Google Tag Manager?

Ci sono due pattern supportati. Il più semplice è aggiungere googletagmanager.com alla scheda Blocco script e assegnarlo alla categoria Analitici o Marketing — GTM stesso non si caricherà fino al consenso. Il pattern più flessibile è lasciare che GTM si carichi senza condizioni e gate i singoli tag dentro GTM usando l’evento ccm:consent-updated come trigger.

Posso tradurre il banner?

Sì. Il plugin è completamente internazionalizzato; il text domain è cookie-consent e i file .pot si trovano nella cartella languages. Se hai il plugin Polyglot installato, le stringhe del banner vengono raccolte automaticamente e tradotte per ogni lingua attiva. Puoi anche sovrascrivere il testo per pagina tramite il filtro ccm_js_settings.

Per quanto tempo viene conservato il consenso?

Per il numero di giorni configurato in Generale → Scadenza cookie. Il default è 365 giorni. Quando il cookie scade il banner riappare e il visitatore deve dare di nuovo il consenso.

Il plugin memorizza dati personali?

Il log dei consensi memorizza un hash SHA-256 dell’indirizzo IP del visitatore (mai l’IP in chiaro), la stringa user agent, un timestamp e le scelte per categoria. Nessun nome, indirizzo email o IP completo viene conservato. Il log serve a soddisfare il requisito GDPR di dimostrare che il consenso è stato dato.

Posso esportare il log dei consensi?

Il log è memorizzato in una tabella WordPress standard ({wp_prefix}ccm_consents) e può essere esportato con qualsiasi strumento per database — phpMyAdmin, Adminer, wp db export o un client SQL. Un’esportazione CSV nativa dalla scheda Statistiche è pianificata per una release futura.

Troubleshooting

Il banner non appare

Il banner viene mostrato automaticamente solo se non c’è un cookie ccm_consent nel browser del visitatore. Se hai già accettato o rifiutato in una visita precedente, la decisione viene ricordata per la Scadenza cookie configurata — tipicamente 365 giorni — e il banner resta nascosto. Per testare da zero, apri i DevTools del browser, elimina il cookie ccm_consent sotto Application → Cookies e ricarica. Come alternativa non distruttiva, clicca il pulsante flottante delle impostazioni (se attivo) e usa Rifiuta tutto per far ricomparire il banner al prossimo caricamento, oppure chiama CookieConsent.resetConsent() dalla console del browser.

Gli script si caricano comunque dopo il rifiuto

Verifica che ogni script di tracciamento sia elencato sotto Blocco script e che il pattern URL combaci davvero. Anche gli script inline iniettati dal tema o dai page builder vengono bloccati, ma solo quando il loro contenuto contiene il pattern configurato. Usa la scheda Network dei DevTools per identificare l’host esatto di qualsiasi richiesta che è sfuggita, poi aggiungilo alla tabella Blocco script.

Il pulsante flottante si sovrappone ad altri widget

Disabilita Mostra pulsante flottante sotto Aspetto e aggiungi invece un link <a class="ccm-open-settings">Preferenze cookie</a> al footer. Ti dà pieno controllo sul posizionamento.

Le statistiche mostrano zero consensi

I contatori si incrementano solo quando un visitatore clicca un pulsante del banner. Le visualizzazioni di pagina senza interazione col banner non vengono loggate. Se vedi zero dopo il lancio, controlla che il banner venga davvero renderizzato e che tu non stia navigando come amministratore loggato in una pagina dove il banner è già stato chiuso in precedenza.

I testi del banner non sono tradotti

Polyglot deve essere installato e attivato e la lingua di destinazione deve essere abilitata in Polyglot → Impostazioni. Le stringhe del banner vengono tradotte alla prima richiesta dopo che una lingua è stata abilitata; visita una pagina in quella lingua una volta come amministratore per innescare la traduzione.

Le impostazioni si resettano dopo l’aggiornamento

Tutta la configurazione admin (testi banner, categorie, aspetto, traduzioni) vive nell’unica option WordPress ccm_settings. I pattern di blocco script vivono nella tabella {wp_prefix}ccm_blocked_scripts. Nessuno dei due viene toccato durante gli aggiornamenti del plugin. Se vedi reset, controlla se un plugin di sicurezza o di sincronizzazione staging stia sovrascrivendo le option — raramente è il plugin cookie consent stesso.

Last updated on