WP Manifestindependent plugin directory
manifest / privacy / db-cookie-manager

DB Cookie Manager WP Registry grade A. No security issues foundWP RegistryNo security issues foundOpen the reportA

A totally free cookie manager plugin for Wordpress

★ 0stars
75release downloads
≈10active sites
v3.9.1latest · 19d ago

Install

Download db-cookie-manager.zip From the v3.9.1 release on GitHub, Oct 6, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/dadebertolino/db-cookie-manager/releases/download/v3.9.1/db-cookie-manager.zip
Updates itself. It ships its own updater, so new versions appear under Dashboard → Updates.

🇮🇹 Italiano | 🇬🇧 English


🇮🇹 Italiano

Plugin WordPress per la gestione GDPR-compliant dei cookie, con banner multilingua, scanner automatico, registro consensi, generatore di Cookie Policy e integrazione nativa con la WP Consent API.

Sviluppato da Davide Bertolino per uso personale e professionale, rilasciato come open-source (GPL v2+).

Integrazione con DB SEO Manager 1.2.0+: se entrambi i plugin sono installati, la dashboard "Stato GDPR" del SEO Manager riconosce il Cookie Manager (bonus +5 al punteggio), il registro privacy mostra automaticamente i tre trattamenti del Cookie Manager con il badge "Plugin esterno", e l'audit homepage arricchisce ogni host noto con i cookie rilevati dallo scanner. Nessuna configurazione richiesta: l'integrazione è automatica e bidirezionale.


Caratteristiche principali

  • Banner cookie multilingua (Italiano, English, Français, Deutsch, Español, Português) con auto-detect dalla lingua del browser
  • 5 categorie standard WP Consent API: functional, preferences, statistics, statistics-anonymous, marketing
  • Blocco preventivo degli script di tracking (Google Analytics, Meta Pixel, GTM, TikTok, ecc.) e degli iframe (YouTube, Vimeo, Maps, Spotify, ecc.)
  • Scanner automatico che visita le pagine principali, parsa i Set-Cookie e rileva firme di servizi terzi — 64 cookie noti pre-classificati
  • Cookie Policy generator conforme alle Linee Guida del Garante 10 giugno 2021 (rif. art. 122 D.Lgs. 196/2003 + GDPR)
  • Registro consensi GDPR-friendly con IP hashato (irreversibile) e user-agent aggregato — export CSV e JSON con filtri
  • API JavaScript pubblica window.DBCM per integrazioni custom
  • Integrazione WP Consent API: wp_has_consent('statistics') risponde correttamente in base al consenso del visitatore
  • Segnali browser opzionali: rispetta Do Not Track (DNT) e Global Privacy Control (GPC)
  • Geo-targeting opzionale: mostra il banner solo a visitatori UE/EEA/UK
  • Google Consent Mode v2 (opt-in): comunica il consenso ai tag Google con default negato nel <head> e update al consenso; mapping personalizzabile via dbcm_gcm_mapping
  • Localizzazione Google Fonts (opt-in): rimuove i riferimenti remoti a Google Fonts così l'IP dell'utente non viene trasmesso a Google
  • Cancellazione reattiva dei cookie: rimuove dal browser i cookie delle categorie non concesse, rendendo effettiva la revoca del consenso
  • Placeholder click-to-load accessibile per gli embed bloccati (consenso granulare per singolo contenuto)
  • Firme personalizzate: aggiunta manuale di servizi/cookie con import/export JSON
  • Report differenziale scanner: evidenzia i cookie nuovi o rimossi tra due scansioni
  • Shortcode [dbcm_preferences] per il pulsante "Modifica preferenze"
  • Auto-aggiornamento da GitHub via DB GitHub Updater
  • Design system condiviso con gli altri plugin DB (db-admin-ui.css)
  • Disinstallazione pulita via uninstall.php

Requisiti

Componente Versione minima
WordPress 6.0+
PHP 7.4+
WP Consent API (opzionale) — per integrazione automatica con altri plugin compatibili

Installazione

  1. Scarica l'ultima release ZIP da GitHub Releases
  2. WordPress admin → Plugin → Aggiungi nuovo → Carica plugin → seleziona lo ZIP → Installa ora → Attiva
  3. Vai a Cookie Manager nel menu sidebar
  4. Configura in ordine: Banner & aspetto → Scanner → Cookie Policy → Avanzate

Gli aggiornamenti successivi arrivano automaticamente via GitHub Updater.


Configurazione consigliata

Per la maggior parte dei siti italiani:

  1. Banner: layout "Riquadro flottante", posizione "In basso a destra", tema "Auto"
  2. Default categorie: tutte disattivate (richiesto dal GDPR)
  3. Durata consenso: 180 giorni (raccomandazione del Garante)
  4. Scanner: lancia almeno una scansione, poi rivedi i cookie marketing non noti
  5. Cookie Policy: crea la pagina automaticamente, poi compila [NOME COMPLETO / RAGIONE SOCIALE] e [INDIRIZZO]
  6. Avanzate: DNT/GPC off per consensi espliciti, on per massima privacy by default

API JavaScript

// Verifica consenso
if (window.DBCM.hasConsent('statistics')) { loadGoogleAnalytics(); }

// Reagisci ai cambi
window.DBCM.onConsent(function(consent, type) {
    console.log('Type:', type);       // 'accept_all' | 'reject_all' | 'custom'
    console.log('Marketing:', consent.marketing);
});

// Apri il modal preferenze
window.DBCM.openPreferences();

// Imposta programmaticamente
window.DBCM.setConsent('marketing', true);

// Mappa completa (null se nessun consenso ancora dato)
var consent = window.DBCM.getConsent();

// Lista canonica delle 5 categorie
console.log(window.DBCM.categories);

Evento DOM alternativo:

document.addEventListener('dbcm:consent', function(ev) {
    var consent = ev.detail.consent;
    var type    = ev.detail.type;
});

Hooks e filtri PHP

Banner

Hook Tipo Note
dbcm_should_render_banner filter Default true — sopprimi il banner su pagine specifiche
dbcm_banner_translations filter Aggiungi/sovrascrivi traduzioni
dbcm_visitor_country_code filter Fornisci il codice paese ISO-3166 alpha-2
dbcm_eu_country_codes filter Personalizza la lista paesi UE/EEA per il geo-targeting

Consent

Hook Tipo Note
dbcm_consent_set action Fired ad ogni cambio consenso — args: $type, $consent
dbcm_consent_propagated action Fired dopo la propagazione a wp_set_consent()
dbcm_consent_type filter Default 'optin' — sovrascrivi il consent type WP API

Blocker

Hook Tipo Note
dbcm_blocker_patterns filter Aggiungi/rimuovi pattern di blocco
dbcm_blocker_placeholder_text filter Testo del placeholder iframe (multilingua)
dbcm_blocker_placeholder_btn_label filter Label del pulsante del placeholder

Scanner

Hook Tipo Note
dbcm_known_cookies filter Aggiungi cookie custom al database statico
dbcm_scan_urls filter Personalizza le URL scansionate
dbcm_scanner_html_detections filter Aggiungi firme HTML di servizi terzi

Cookie Policy

Hook Tipo Note
dbcm_policy_sections filter Riordina/rimuovi sezioni
dbcm_policy_html filter Modifica l'HTML finale
dbcm_policy_section_* filter Modifica singole sezioni (header, definitions, cookies, external, browser, ecc.)

Consent Log

Hook Tipo Note
dbcm_trust_proxy_headers filter Default false — fidati di X-Forwarded-For e simili per l'IP

API server-side per altri plugin

DBCM_Consent_API::has_consent($category) (dalla 3.0.0)

Helper unificato per leggere il consenso. Strategia a 3 livelli: wp_has_consent() se WP Consent API installata, altrimenti cookie diretto, altrimenti false.

DBCM_Scanner::get_cookies_by_provider_keyword($keyword, $limit = 50) (dalla 3.0.2)

Ricerca i cookie scansionati il cui campo provider contiene la keyword (LIKE substring, case-insensitive). Usato da DB SEO Manager 1.2.0+.

if (class_exists('DBCM_Scanner')) {
    $cookies = DBCM_Scanner::get_cookies_by_provider_keyword('Google Analytics');
    foreach ($cookies as $c) {
        echo $c->cookie_name . ' (' . $c->category . ')';
    }
}

Esempi pratici

Caricare Google Analytics solo dopo consenso statistics:

add_action('wp_footer', function() {
    if (function_exists('wp_has_consent') && wp_has_consent('statistics')) { ?>
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXX"></script>
        <script>
            window.dataLayer = window.dataLayer || [];
            function gtag(){dataLayer.push(arguments);}
            gtag('js', new Date());
            gtag('config', 'G-XXXXX');
        </script>
    <?php }
});

Sopprimere il banner su una landing page:

add_filter('dbcm_should_render_banner', function($render) {
    if (is_page('landing-newsletter')) return false;
    return $render;
});

Aggiungere un cookie custom allo scanner:

add_filter('dbcm_known_cookies', function($cookies) {
    $cookies['my_app_session'] = [
        'category'    => 'functional',
        'description' => 'Sessione applicativa interna.',
        'duration'    => 'Sessione',
        'provider'    => 'My App',
    ];
    return $cookies;
});

Link "Modifica preferenze" nel footer:

echo do_shortcode('[dbcm_preferences label="Cookie" style="link"]');

FAQ

Il plugin è davvero conforme al GDPR? Fornisce gli strumenti tecnici per la conformità. La conformità completa dipende dalla configurazione e dalle scelte editoriali. Una revisione da DPO o avvocato resta necessaria per rassicurazioni legali.

Posso usarlo con altri consent manager? No — solo uno alla volta. Disattiva l'altro prima.

Funziona in multisite? Sì. Ogni sito ha le proprie option e il proprio log. La disinstallazione è multisite-aware.

Il blocco preventivo rompe il mio sito? Solo se il tema dipende esattamente da uno script di tracking bloccato (raro). Se hai problemi, disabilita "Blocco preventivo" nella pagina Scanner.

Come gestisce IPv6? Hashing SHA256 dell'IP completo (v4 o v6) + salt site-specifico. Irreversibile in pratica.

Posso esportare il log per richieste GDPR? Sì — Registro consensi → Scarica CSV o Scarica JSON, con filtri per tipo e data.


Privacy

Il plugin non comunica con server esterni. Niente telemetria, niente phone-home. L'unica connessione esterna è GitHub Updater per gli aggiornamenti del plugin.

Cookie scritti dal plugin:

Cookie Categoria Durata Scopo
dbcm_consent functional 365 giorni (configurabile) Memorizza la scelta dell'utente

Changelog

3.7.0 — Modulo Meta Pixel nativo (2026)

Il plugin che possiede il consenso possiede anche il pixel: nuovo modulo opt-in (Avanzate → Meta Pixel) che emette lo snippet Meta come gate JS, quindi il caricamento di fbevents.js è vincolato per costruzione alla categoria Marketing (Art. 6.1.a) — nessuna race tra CMP e tag di terzi.

  • Fire senza reload: check iniziale su window.DBCM.hasConsent('marketing') (version-aware: un consenso con versione obsoleta non concede) + listener su dbcm:consent. Alla revoca invia fbq('consent','revoke') a runtime (Art. 7.3); la rimozione di _fbp è coperta dalla cancellazione reattiva esistente.
  • Anti auto-blocco: il gate contiene le stringhe che il blocker matcha sul contenuto inline (connect.facebook.net, fbevents.js) — nuovo skip esplicito data-dbcm-own nel blocker, con test di contratto: il gate passa, un Meta Pixel di terzi (es. Meta for WooCommerce) resta bloccato.
  • Trasparenza automatica: quando attivo, lo slug meta-pixel è registrato nei servizi dichiarati (idratato dalla firma: fonte unica di verità) e il trattamento in contitolarità con Meta (Art. 26, DPF) è dichiarato a DB Privacy Hub via dbph_processing_register. Alla firma meta-pixel si aggiunge il cookie _fbc (click ID).
  • Handoff CAPI (opt-in): PageView inviato con eventID condiviso esposto in window.DBCM_META_LAST_EVENT_ID, per la deduplicazione con la futura Conversions API server-side (DB Meta Events).
  • Pixel ID validato server-side (solo 15–16 cifre, ri-sanitizzato anche in lettura). Test: +24 unit (modulo 20, contratto blocker 4), validati con mutation testing.

3.6.1 — Firma Facebook per contenuti incorporati (2026)

Chiude un gap di blocco rilevato tramite la nuova pagina Servizi dichiarati: gli embed Facebook via iframe (facebook.com/plugins/… — post, video, like/share button) non erano coperti da alcuna firma né dai pattern del blocker, quindi caricavano prima del consenso (era gestito solo il Meta Pixel via connect.facebook.net). Nuova firma facebook con cookie tipici (fr, datr, sb) e informativa Meta: in cascata sistemano blocco preventivo dell'iframe, placeholder click-to-load, registro dei servizi dichiarati, pick-list e rilevamento scanner. Il caricamento via SDK JS resta attribuito a meta-pixel (nessuna doppia attribuzione). Test: +3 unit di regressione (132 totali).

3.6.0 — Registro dei servizi dichiarati (2026)

Risolve un problema strutturale emerso in audit su caso reale: la Cookie Policy generata elencava solo i cookie tecnici, perché lo scanner acquisisce le pagine via self-request e l'HTML che analizza è già passato dal blocco — gli embed gated (YouTube, Maps, ...) sono già placeholder e le firme non matchano più. Più il blocco funziona, più la policy è incompleta: non giustifica il consenso richiesto dal banner (incoerenza documentale, Art. 5(1)(a)).

  • Registrazione automatica al momento del blocco: quando il blocker matcha e riscrive un iframe/script, risolve la src in una firma (DBCM_Signatures::identify_url(), nuovo) e registra {slug, last_seen}. Evidenza empirica dell'uso reale — niente sovra-dichiarazione dei 42 servizi bundled su siti che non li usano. La self-request dello scanner passa dal blocco, quindi lanciare una scansione popola il registro: circolarità risolta senza alcun bypass (un bypass sarebbe spoofabile = elusione del consenso). Scritture throttled: una per servizio al giorno.
  • Staleness: le voci auto entrano in policy solo se viste negli ultimi 30 giorni (filtro dbcm_declared_services_ttl) — embed rimosso, voce che decade da sola. I dettagli (fornitore, cookie tipici, durate, informativa) sono idratati dal DB firme alla generazione: fonte unica di verità.
  • Nuova sezione in policy "Contenuti incorporati e servizi attivi previo consenso", per categoria, con dicitura "bloccati per impostazione predefinita" e rinvio esplicito alle informative delle terze parti (ammesso dalle Linee Guida Garante 10/06/2021 per cookie non sotto il controllo del titolare).
  • Dichiarazione manuale (Cookie Manager → Servizi dichiarati): pick-list dalle firme note (dati precompilati) o form libero per i casi residuali; le voci manuali non scadono e, a parità di servizio, prevalgono su quelle automatiche.
  • Validazione di coerenza banner ↔ policy: categorie richieste nel banner senza cookie rilevati né servizi dichiarati generano un avviso in dashboard — copre sia il servizio non documentato sia la richiesta di consenso ingiustificata.
  • Integrazione DB Privacy Hub: registro esposto via filtro dbcm_declared_services_register (consumo da DBPH ≥ 1.4.0, fallback trasparente se assente).
  • Test: +22 unit (registro 17, identify_url 3, policy 2+1), tutti validati con mutation testing.

3.5.1 — Split di class-admin.php (2026)

Release di manutenzione, zero cambi di comportamento. Il monolite class-admin.php (2.871 righe) è stato spezzato in un guscio comune (menu, dispatcher di salvataggio, render helper, flash notices — 745 righe) più una classe per pagina: Dashboard, Banner, Scanner, Firme, Cookie Policy, Registro consensi, Avanzate (inc/class-admin-page-*.php, ognuna ≤ 510 righe). Refactor meccanico validato con la suite completa prima/dopo (107 unit + 16 integration invariati) e smoke di riflessione sulle classi estratte. Pattern PHPCS dei falsi positivi documentati estesi ai nuovi file (stesso codice, stessa verifica manuale).

3.5.0 — Versioning del consenso (2026)

Il consenso GDPR è specifico e informato rispetto ai trattamenti presentati al momento della scelta (Art. 4(11) + 6(1)(a)): se dopo la raccolta del consenso aggiungi un nuovo tracker o cambi in modo significativo i trattamenti, i consensi già salvati (validi fino a 365 giorni) non coprono le novità. Da questa versione ogni consenso è legato a una versione della configurazione dei trattamenti.

  • Contatore manuale (default: 1) con bottone in admin (Banner → Contenuto → Versione del consenso) "Richiedi nuovo consenso a tutti gli utenti". La valutazione di "mutamento significativo delle condizioni del trattamento" (Linee guida Garante 10/6/2021 §5) è un giudizio che spetta al titolare: nessun re-prompt automatico, per evitare l'assuefazione al consenso (consent fatigue) che le stesse linee guida indicano come criticità.
  • Mismatch = assenza di consenso (rigoroso): dopo un incremento, i cookie dbcm_consent con versione precedente vengono trattati come nessuna scelta — lato client (banner ri-mostrato) e lato server (has_consent() nega; all'hydrate viene propagato un deny esplicito alla WP Consent API, i cui cookie sopravvivrebbero altrimenti al bump). Nessuna pre-selezione delle vecchie scelte nel nuovo banner.
  • Valore probatorio (Art. 7(1)): il consent log registra la versione in una nuova colonna consent_version (schema 3, migrazione additiva non distruttiva), valorizzata lato server dal setting — non falsificabile dal client. Esposta nella tabella admin (colonna Ver.), negli export CSV/JSON e nell'integrazione Privacy Hub. Complementare a policy_version: quella è la versione del documento informativa, questa della configurazione dei trattamenti.
  • Retrocompatibilità: i cookie pre-3.5.0 (senza campo cv) valgono come versione 1 — l'aggiornamento del plugin da solo non ri-presenta il banner a nessuno; solo l'incremento esplicito dell'admin lo fa.
  • Rimossa l'opzione reconsent_on_change (mai collegata a un comportamento reale): il versioning la sostituisce con un meccanismo effettivo.
  • Test: +12 unit (validazione cv in read_cookie/has_consent/hydrate, clamp del setting) e +3 integration (schema 3, valore loggato), tutti validati con mutation testing.

3.4.3 — Segnali di consenso Microsoft (UET + Clarity) (2026)

Due nuovi segnali di consenso, entrambi opt-in e disattivati di default, sul modello di Google Consent Mode v2. Microsoft richiede un segnale di consenso esplicito per i visitatori da SEE, Regno Unito e Svizzera (per Clarity dal 31/10/2025).

Microsoft UET Consent Mode:

  • Nuova opzione (Avanzate → Segnali di consenso Microsoft) per i tag UET (Microsoft Advertising / Bing Ads).
  • Inietta nel <head>, prima del tag UET, window.uetq.push('consent','default',{ad_storage:'denied'}) — privacy by default, GDPR Art. 25.
  • Al consenso (categoria Marketing), banner.js invia l'update granted; alla revoca torna denied (Art. 7(3): revocare è facile quanto consentire). Mapping personalizzabile via filtro dbcm_uet_mapping.

Microsoft Clarity ConsentV2:

  • Segnale consentv2 con ad_Storage e analytics_Storage negati di default; l'update segue le categorie Marketing e Statistiche.
  • Scelta conservativa: la categoria Statistiche anonime non è mappata — le registrazioni di sessione di Clarity non sono assimilabili a statistica anonima. Estendibile via filtro dbcm_clarity_mapping.
  • Alla revoca Clarity riceve il denied, elimina i propri cookie e prosegue in modalità senza consenso — coerente con la cancellazione reattiva del plugin.

Ambito dichiarato (scope non-TCF):

  • DBCM non implementa il framework IAB TCF v2.2: servire annunci personalizzati in SEE/UK con AdSense/Ad Manager/AdMob richiede una CMP certificata da Google e registrata IAB, con ricertificazione annuale — insostenibile per un plugin indipendente. Chi usa AdSense può affiancare la CMP di Google; DBCM copre tutti gli altri scenari di consenso (analytics, marketing, embed, segnali Google e Microsoft).

3.4.2 — Link alle informative dei fornitori (2026)

  • Nella tabella cookie della Cookie Policy, il nome del fornitore ora linka la sua informativa privacy quando il fornitore è noto al database firme (trasparenza GDPR Art. 13(1)(e)-(f): informazioni sui destinatari dei dati; completa la colonna "Trasferimento" per le garanzie del Capo V).
  • Il matching allinea le due nomenclature interne ("Google Ireland Ltd." nelle firme, "Google Analytics" nello scanner-da-header) con regole conservative: nessun link viene inventato per fornitori ignoti o self-hosted.
  • Le firme personalizzate supportano il nuovo campo URL informativa privacy (form admin, import/export JSON); gli URL non http(s) vengono scartati in salvataggio.

3.4.1 — Aggiornamento Cookie policy (2026)

  • Nuova colonna "Trasferimento" che indica i cookie con trasferimento dati extra-UE (USA), con nota sulle garanzie del Capo V GDPR (Clausole Contrattuali Standard / Data Privacy Framework). Rilevamento automatico dei provider USA noti.

3.4.0 — Consent Mode v2, Google Fonts locali e report scanner (2026)

Tre nuove funzionalità orientate alla conformità, tutte opt-in e disattivate di default.

Google Consent Mode v2:

  • Nuova opzione (Avanzate → Google Consent Mode v2) che comunica lo stato del consenso ai tag Google (GA4, Google Ads).
  • Inietta nel <head>, il prima possibile, il comando gtag('consent','default',…) con tutti i segnali negati (analytics_storage, ad_storage, ad_user_data, ad_personalization) — privacy by default, GDPR Art. 25.
  • Al consenso, banner.js invia gtag('consent','update',…) con i soli segnali concessi. Mapping categoria→segnale personalizzabile via filtro dbcm_gcm_mapping.
  • Consigliata la disattivazione se il Consent Mode è già gestito via Google Tag Manager, per evitare doppie inizializzazioni.

Localizzazione Google Fonts:

  • Nuova opzione (Avanzate → Google Fonts) che rimuove dall'HTML i riferimenti remoti a fonts.googleapis.com / fonts.gstatic.com (stylesheet, preconnect, dns-prefetch e @import correlati).
  • Il browser non contatta più i server Google al caricamento della pagina: l'indirizzo IP dell'utente non viene trasmesso (la trasmissione avverrebbe prima di ogni consenso). Rilevante dopo la sentenza del Tribunale di Monaco (gennaio 2022).
  • Il sito ripiega sui font di sistema del fallback CSS. L'opzione rimuove i font, non fa self-hosting (download + riscrittura locale).

Report differenziale scanner:

  • La pagina Scanner mostra ora una card "Modifiche dall'ultima scansione" con i cookie nuovi e rimossi rispetto alla scansione precedente.
  • Utile per l'accountability (GDPR Art. 5.2): evidenzia se un aggiornamento del sito ha introdotto tracker inattesi. Un cookie che cambia categoria è segnalato come rimosso dalla vecchia e aggiunto alla nuova.
  • Snapshot leggero salvato in una singola option prima del TRUNCATE — nessuna nuova tabella.

Correzioni:

  • Lo scanner allinea la classificazione al database firme condiviso: i cookie tecnici noti (es. store_notice* di WooCommerce) non vengono più erroneamente classificati come marketing. Il fallback consulta DBCM_Signatures prima di ripiegare su marketing.

3.3.0 — Segnali di consenso avanzati (2026)

  • Cancellazione reattiva dei cookie: alla revoca del consenso (o al load senza consenso), i cookie delle categorie non concesse vengono rimossi dal browser. Rende la revoca effettiva e non solo formale (GDPR Art. 7.3, 17, 5.1.e). Supporta i wildcard (es. _ga_*).
  • UI aggiunta manuale firme: nuova pagina Firme personalizzate per aggiungere servizi e cookie non coperti dal database interno, con pattern di blocco (substring/regex), pulizia reattiva e import/export JSON. Ogni scrittura è sanificata e le regex malformate degradano automaticamente a substring.
  • Placeholder click-to-load: gli embed bloccati (YouTube, Maps, ecc.) mostrano un placeholder accessibile (role="region", navigabile da tastiera) con un pulsante "Carica …" che attiva il singolo contenuto senza scrivere un consenso persistente per l'intera categoria — consenso granulare e puntuale.

3.3.1 — Fix (2026)

  • Correzione classificazione store_notice* (poi consolidata in 3.4.0).

3.2.0 — Linking versione Privacy Policy + filter Hub consensi (2026)

Allineamento con il Privacy Hub 1.3.0 che introduce il Registro consensi unificato.

Linking automatico alla versione Privacy Policy:

  • Ogni riga in wp_dbcm_consent_log ora include una colonna policy_version BIGINT che memorizza l'ID dello snapshot Privacy Policy in vigore al momento del consenso (letto via DBPH_Policy_Archive::get_current_version_id()).
  • Permette di dimostrare in audit "l'utente ha accettato leggendo questa versione del documento" (audit trail completo per art. 7.1 GDPR).
  • Senza il Privacy Hub: policy_version=0, comportamento identico alla 3.1.0 (nessuna regressione).

Filter dbph_consents_register:

  • Cookie Manager dichiara la propria fonte di consensi al Privacy Hub via questo filter pubblico. La pagina Privacy → Registro consensi dell'Hub include automaticamente i consensi cookie nella vista unificata.
  • Callback fornite: count, query, export. L'Hub gestisce filtri (data range, identificativo, fonte) e produzione CSV.

Schema DB:

  • Migrazione wp_dbcm_consent_log schema 1 → 2: aggiunta colonna policy_version + indice. dbDelta è additivo, dati esistenti preservati. Le righe pre-3.2.0 hanno policy_version=0 (visibili nel registro Hub con label "—").

Compatibilità retroattiva:

  • Nessun breaking change. Il plugin funziona identicamente in standalone, con SEO Manager, con Privacy Hub 1.0-1.2.x.
  • Privacy Hub 1.3.0+ è raccomandato (non richiesto) per visualizzare il Registro consensi unificato.

3.1.0 — Integrazione DB Privacy Hub (2026)

  • Nuovo metodo pubblico DBCM_Policy_Generator::get_sections() — espone le sezioni della Cookie Policy come array associativo per il riuso da parte del DB Privacy Hub (Privacy Policy unificata)
  • Sezione "Titolare del trattamento" della Cookie Policy ora legge automaticamente i dati salvati nel DB Privacy Hub (dbph_titolare_*): se il Privacy Hub è installato e configurato, niente più placeholder da sostituire a mano
  • DBCM_Privacy_Declarations ora si aggancia al filter unificato dbph_processing_register del Privacy Hub, mantenendo backward-compat con dbseo_processing_register (SEO Manager 1.2.x)
  • ⚠️ Il filter dbcm_policy_sections ora riceve un array associativo (chiavi: header, cookies_used, ecc.) invece che indicizzato — uso interno, breaking solo per filtri custom

3.0.2 — API pubblica scanner e README bilingue (2026)

  • Nuovo metodo pubblico DBCM_Scanner::get_cookies_by_provider_keyword($keyword, $limit = 50)
  • Modulo DBCM_Privacy_Declarations: integrazione automatica con DB SEO Manager 1.2.0+
  • Sanitizzazione difensiva: keyword min 2 caratteri, hard cap 200 righe
  • README bilingue IT/EN con tabelle allineate

3.0.1 — Integrazione registro privacy SEO Manager (2026)

  • Modulo DBCM_Privacy_Declarations: dichiara i tre trattamenti al registro privacy DB SEO Manager 1.2.0+

3.0.0 — Rebuild completo (2026) ⚠️ Breaking change

Riscrittura da zero, non retrocompatibile con 2.x. Svuotare le option dbcm_* e ricreare le tabelle.

  • Integrazione WP Consent API nativa — 5 categorie standard (functional, preferences, statistics, statistics-anonymous, marketing)
  • Blocker preventivo riallineato: Cloudflare CDN sbloccato, aggiunti TikTok/Pinterest/Bing UET/MS Clarity/Mixpanel/Heap/Amplitude/FullStory/GTM; embed estesi (Instagram, X, Spotify, SoundCloud); placeholder iframe traducibile
  • Consent log GDPR-friendly: UA aggregato, IP solo hashato, export JSON oltre a CSV, schema versionato con migrazione just-in-time
  • Scanner: schema versionato, HTML detection allineata al blocker, parsing Set-Cookie compatibile WP < 6.2 e ≥ 6.2, injection automatica dbcm_consent nelle policy
  • Cookie database: 64 cookie noti, cookie unmatched → marketing safer-by-default, guess_provider esteso a 26 prefix
  • Policy generator: sezioni modulari filtrabili, riferimento Linee Guida Garante 2021, sezione "Servizi senza cookie"
  • Admin UI completa: dashboard + 5 sottopagine, dispatcher centralizzato, db-admin-ui.css
  • GitHub Updater integrato, uninstall.php con cleanup completo, shortcode [dbcm_preferences]
  • DNT/GPC runtime opt-out automatico, geo-targeting opzionale UE/EEA/UK

2.0.1 (2026)

  • Fix layout banner "barra": disposizione orizzontale su desktop (testo a sinistra, bottoni a destra)
  • Cookie WordPress core (wordpress_sec_*, wordpress_logged_in_*, wp-settings-*, wordpress_test_cookie) iniettati automaticamente nei risultati della scansione
  • Rilevamento Google Fonts alternativo via stili registrati WordPress e theme_mod (fallback per hosting con loopback bloccato)
  • Fix salvataggio impostazioni: i checkbox non vengono più azzerati salvando da un'altra sezione
  • Crediti "Powered by DB Cookie Manager" opzionali nel banner
  • Try-catch nell'init JS per debug errori

2.0.0 (2026)

  • Banner cookie frontend con 3 layout e tema chiaro/scuro
  • Blocco preventivo script con attivazione dinamica
  • Placeholder per iframe bloccati
  • Registro consensi con export CSV e pulizia automatica
  • Sistema multilingua integrato (6 lingue)
  • Categoria "Prestazioni" per cookie CDN/caching
  • Pagina impostazioni completa con anteprima colori live
  • Accessibilità WCAG: ARIA, focus trap, keyboard navigation, reduced motion

1.0.0 (2026)

  • Scansione asincrona AJAX
  • Database 50+ cookie noti con classificazione automatica
  • Generatore Cookie Policy
  • Report con modifica manuale

Licenza

GPL v2 o successiva — vedi LICENSE.

Crediti

Sviluppato da Davide Bertolino. Design system db-admin-ui.css condiviso con la suite plugin DB. Riconoscimenti a WP Consent API per lo standard di interoperabilità.



🇬🇧 English

WordPress plugin for GDPR-compliant cookie management, with a multilingual banner, automatic scanner, consent log, Cookie Policy generator, and native WP Consent API integration.

Developed by Davide Bertolino for personal and professional use, released as open-source (GPL v2+).

Integration with DB SEO Manager 1.2.0+: when both plugins are installed, the SEO Manager's "GDPR Status" dashboard recognises Cookie Manager (bonus +5 to score), the privacy register automatically shows the three Cookie Manager treatments with an "External Plugin" badge, and the homepage audit enriches each known host with cookies actually detected by the scanner. No configuration required: the integration is automatic and bidirectional.


Main Features

  • Multilingual cookie banner (Italian, English, French, German, Spanish, Portuguese) with auto-detect from browser language
  • 5 standard WP Consent API categories: functional, preferences, statistics, statistics-anonymous, marketing
  • Preventive blocking of tracking scripts (Google Analytics, Meta Pixel, GTM, TikTok, etc.) and iframes (YouTube, Vimeo, Maps, Spotify, etc.)
  • Automatic scanner that visits main pages, parses Set-Cookie headers and detects third-party service signatures — 64 pre-classified known cookies
  • Cookie Policy generator compliant with the Italian DPA Guidelines of 10 June 2021 (ref. art. 122 D.Lgs. 196/2003 + GDPR)
  • GDPR-friendly consent log with hashed (irreversible) IP and aggregated user-agent — CSV and JSON export with filters
  • Public JavaScript API window.DBCM for custom integrations
  • WP Consent API integration: wp_has_consent('statistics') responds correctly based on visitor consent
  • Optional browser signals: respects Do Not Track (DNT) and Global Privacy Control (GPC)
  • Optional geo-targeting: shows banner only to EU/EEA/UK visitors
  • Google Consent Mode v2 (opt-in): signals consent to Google tags with a denied default in <head> and update on consent; mapping customisable via dbcm_gcm_mapping
  • Google Fonts localisation (opt-in): strips remote Google Fonts references so the user's IP is not sent to Google
  • Reactive cookie cleanup: removes cookies of non-granted categories from the browser, making consent withdrawal effective
  • Accessible click-to-load placeholder for blocked embeds (granular per-embed consent)
  • Custom signatures: manually add services/cookies with JSON import/export
  • Scanner differential report: highlights cookies added or removed between two scans
  • Shortcode [dbcm_preferences] for a "Manage preferences" button anywhere
  • Auto-update from GitHub via DB GitHub Updater
  • Shared design system with other DB plugins (db-admin-ui.css)
  • Clean uninstall via uninstall.php

Requirements

Component Minimum version
WordPress 6.0+
PHP 7.4+
WP Consent API (optional) — for automatic integration with other compatible plugins

Installation

  1. Download the latest ZIP from GitHub Releases
  2. WordPress admin → Plugins → Add new → Upload plugin → select ZIP → Install now → Activate
  3. Go to Cookie Manager in the sidebar menu
  4. Configure in order: Banner & appearance → Scanner → Cookie Policy → Advanced

Subsequent updates arrive automatically via GitHub Updater.


Recommended Configuration

For most websites:

  1. Banner: layout "Floating box", position "Bottom right", theme "Auto"
  2. Default categories: all disabled (required by GDPR)
  3. Consent duration: 180 days (DPA recommendation)
  4. Scanner: run at least one scan, then manually review unrecognised marketing cookies
  5. Cookie Policy: auto-create the page, then fill in [FULL NAME / COMPANY NAME] and [ADDRESS]
  6. Advanced: DNT/GPC off for explicit consent collection, on for maximum privacy by default

JavaScript API

// Check consent
if (window.DBCM.hasConsent('statistics')) { loadGoogleAnalytics(); }

// React to changes
window.DBCM.onConsent(function(consent, type) {
    console.log('Type:', type);       // 'accept_all' | 'reject_all' | 'custom'
    console.log('Marketing:', consent.marketing);
});

// Open preferences modal
window.DBCM.openPreferences();

// Set programmatically
window.DBCM.setConsent('marketing', true);

// Full map (null if no consent given yet)
var consent = window.DBCM.getConsent();

// Canonical list of 5 categories
console.log(window.DBCM.categories);

Alternative DOM event:

document.addEventListener('dbcm:consent', function(ev) {
    var consent = ev.detail.consent;
    var type    = ev.detail.type;
});

PHP Hooks & Filters

Banner

Hook Type Notes
dbcm_should_render_banner filter Default true — suppress banner on specific pages
dbcm_banner_translations filter Add/override translations
dbcm_visitor_country_code filter Supply ISO-3166 alpha-2 country code from MaxMind/GeoIP
dbcm_eu_country_codes filter Customise EU/EEA country list for geo-targeting

Consent

Hook Type Notes
dbcm_consent_set action Fired on every consent change — args: $type, $consent
dbcm_consent_propagated action Fired after propagation to wp_set_consent()
dbcm_consent_type filter Default 'optin' — override WP API consent type

Blocker

Hook Type Notes
dbcm_blocker_patterns filter Add/remove blocking patterns
dbcm_blocker_placeholder_text filter Iframe placeholder text (multilingual)
dbcm_blocker_placeholder_btn_label filter Placeholder button label

Scanner

Hook Type Notes
dbcm_known_cookies filter Add custom cookies to the static database
dbcm_scan_urls filter Customise scanned URLs
dbcm_scanner_html_detections filter Add HTML signatures of third-party services

Cookie Policy

Hook Type Notes
dbcm_policy_sections filter Reorder/remove sections
dbcm_policy_html filter Modify final HTML
dbcm_policy_section_* filter Modify individual sections (header, definitions, cookies, external, browser, etc.)

Consent Log

| Hook | Type | Notes

This README is longer than the copy stored here. Read the rest on GitHub →

Releases

22 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v3.9.1 latest
Oct 6, 2026 19d ago
db-cookie-manager.zip
11
Oct 6, 2026 19d ago
db-cookie-manager.zip
0
Oct 5, 2026 20d ago
db-cookie-manager.zip
0
Oct 5, 2026 20d ago
db-cookie-manager.zip
0
Sep 26, 2026 29d ago
db-cookie-manager.zip cohort
8
Sep 26, 2026 29d ago
db-cookie-manager.zip
0
Jul 19, 2026 3mo ago
db-cookie-manager.zip
13
Jul 16, 2026 3mo ago
db-cookie-manager.zip
2
Jul 16, 2026 3mo ago
db-cookie-manager.zip
2
Jul 16, 2026 3mo ago
db-cookie-manager.zip
0
Jul 15, 2026 3mo ago
db-cookie-manager.zip
1
Jul 15, 2026 3mo ago
db-cookie-manager.zip
0
Jul 15, 2026 3mo ago
db-cookie-manager.zip
6
Jul 14, 2026 3mo ago
db-cookie-manager.zip
1
Jul 14, 2026 3mo ago
db-cookie-manager.zip
0
Jul 14, 2026 3mo ago
db-cookie-manager.zip
2
Jul 14, 2026 3mo ago
db-cookie-manager.zip
0
May 3, 2026 5mo ago
db-cookie-manager.zip
5
May 2, 2026 5mo ago
db-cookie-manager.zip
3
May 2, 2026 5mo ago
db-cookie-manager.zip
2
Apr 6, 2026 6mo ago
db-cookie-manager.zip
1
Apr 6, 2026 6mo ago
db-cookie-manager.zip
18

Active-site estimate ≈10 comes from the v3.8.0 cohort. Method.

A grade

Security

DB Cookie Manager 3.9.1 · audited by WP Registry

No security issues found.

Audited release
3.9.1
Findings
none
Worst severity
—
Content hash
99d33540fe84f9720e30e081…

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.