DB Cookie Manager releasesself-updates
A totally free cookie manager plugin for Wordpress
by Davide Bertolino · github.com/dadebertolino/db-cookie-manager · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/dadebertolino/db-cookie-manager/releases/download/v3.7.0/db-cookie-manager.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
Readme
DB Cookie Manager
🇮🇹 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-Cookiee 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.DBCMper 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 viadbcm_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
- Scarica l'ultima release ZIP da GitHub Releases
- WordPress admin → Plugin → Aggiungi nuovo → Carica plugin → seleziona lo ZIP → Installa ora → Attiva
- Vai a Cookie Manager nel menu sidebar
- 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:
- Banner: layout "Riquadro flottante", posizione "In basso a destra", tema "Auto"
- Default categorie: tutte disattivate (richiesto dal GDPR)
- Durata consenso: 180 giorni (raccomandazione del Garante)
- Scanner: lancia almeno una scansione, poi rivedi i cookie marketing non noti
- Cookie Policy: crea la pagina automaticamente, poi compila
[NOME COMPLETO / RAGIONE SOCIALE]e[INDIRIZZO] - 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 sudbcm:consent. Alla revoca inviafbq('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 esplicitodata-dbcm-ownnel 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 viadbph_processing_register. Alla firmameta-pixelsi aggiunge il cookie_fbc(click ID). - Handoff CAPI (opt-in): PageView inviato con
eventIDcondiviso esposto inwindow.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.
Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| v3.7.0 | Jul 19, 2026 | db-cookie-manager.zip | 9 |
| v3.6.1 | Jul 16, 2026 | db-cookie-manager.zip | 2 |
| v3.6.0 | Jul 16, 2026 | db-cookie-manager.zip | 2 |
| v3.5.1 | Jul 16, 2026 | db-cookie-manager.zip | 0 |
| v3.4.3 | Jul 15, 2026 | db-cookie-manager.zip | 1 |
| v3.4.2 | Jul 15, 2026 | db-cookie-manager.zip | 0 |
| v3.4.1 | Jul 15, 2026 | db-cookie-manager.zip | 6 |
| v3.4.0 | Jul 14, 2026 | db-cookie-manager.zip | 1 |
| v3.3.1 | Jul 14, 2026 | db-cookie-manager.zip | 0 |
| v3.3.0 | Jul 14, 2026 | db-cookie-manager.zip | 2 |
| v3.3.0-beta.1 | Jul 14, 2026 | db-cookie-manager.zip | 0 |
| v3.2.0 | May 3, 2026 | db-cookie-manager.zip | 5 |
| v3.1.0 | May 2, 2026 | db-cookie-manager.zip | 3 |
| v3.0.2 | May 2, 2026 | db-cookie-manager.zip | 2 |
| v2.0.1 | Apr 6, 2026 | db-cookie-manager.zip | 1 |
| v2.0.0 | Apr 6, 2026 | db-cookie-manager.zip | 18 |