DB Privacy Hub releasesself-updates
Hub privacy unificato per l'ecosistema plugin DB. Raccoglie i trattamenti dichiarati dai plugin DB (Cookie Manager, Form Builder, SEO Manager…) e genera una Privacy Policy completa (artt. 13-14 GDPR) pronta da pubblicare come pagina WordPress. Importa automaticamente la Cookie Policy dal DB Cookie Manager se installato. Niente servizi esterni, niente tracciamento.
by Davide Bertolino · github.com/dadebertolino/db-privacy-hub · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/dadebertolino/db-privacy-hub/releases/download/v1.6.0/db-privacy-hub.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
Readme
DB Privacy Hub
Hub privacy unificato per l'ecosistema plugin DB. Raccoglie i trattamenti dichiarati dai plugin DB (Cookie Manager, Form Builder, SEO Manager…) e genera una Privacy Policy completa pronta da pubblicare come pagina WordPress.
Niente servizi esterni, niente registrazioni, niente nag.
🇮🇹 Italiano
A cosa serve
Quando hai più plugin DB attivi sul sito, ognuno tratta dati personali per i propri scopi: il Cookie Manager raccoglie il consenso ai cookie, il Form Builder riceve invii moduli e gestisce DSAR, il SEO Manager configura analytics e tracking, ecc. La normativa privacy (artt. 13-14 GDPR) impone un'unica informativa che descriva tutti questi trattamenti.
Il DB Privacy Hub raccoglie automaticamente le dichiarazioni di ogni plugin DB attivo, vi aggiunge i dati del titolare, le sezioni cookie importate dal Cookie Manager (se installato), un'individuazione automatica dei destinatari dei dati e tutto il boilerplate normativo (diritti dell'interessato, conservazione, reclamo all'autorità di controllo). Poi pubblica il documento come pagina WordPress.
Caratteristiche principali
- Registro trattamenti unificato — un'unica pagina admin che mostra tutti i trattamenti dichiarati dai plugin DB attivi
- Generatore Privacy Policy completo — composizione automatica di un documento conforme agli artt. 13-14 GDPR
- Form titolare — nome, P.IVA, indirizzo, email, PEC, DPO; salvati una volta, riusati ovunque
- Detection automatica destinatari — riconosce reCAPTCHA configurato, plugin SMTP attivi, webhook host configurati nei form
- Ponte WooCommerce — con WooCommerce attivo, dichiara automaticamente i trattamenti e-commerce (ordini, fatturazione, account, pagamenti) e rileva i gateway di pagamento abilitati come destinatari
- Importazione sezioni cookie — se il DB Cookie Manager è installato, le sezioni cookie del documento vengono importate automaticamente (niente duplicazione di logica)
- Integrazione DSAR — se il DB Form Builder 2.5.0+ è installato, la sezione "Diritti dell'interessato" menziona la procedura DSAR automatica
- Pubblicazione one-click — crea (o rigenera) una pagina WordPress con titolo e slug configurabili, e la imposta come
wp_page_for_privacy_policycore - Export
.md— scarica l'informativa come file Markdown - Auto-update — aggiornamenti distribuiti via GitHub Releases, visibili direttamente nel pannello WordPress
Requisiti
- WordPress 5.8+
- PHP 7.4+
- (Opzionale ma consigliato) DB Cookie Manager 3.1.0+ per integrazione cookie
Installazione
- Scarica l'ultimo ZIP dalle Releases
- WordPress → Plugin → Aggiungi nuovo → Carica plugin → Carica lo ZIP → Attiva
- Vai a Privacy → Genera Privacy Policy, compila i dati del titolare, salva, click su "Crea pagina WordPress". Fatto.
Il plugin si auto-aggiorna da GitHub: gli aggiornamenti compaiono direttamente nel pannello plugin di WordPress.
Filosofia
Lo stesso principio dell'intero ecosistema DB: nessun servizio esterno, nessun tracking, nessuna registrazione, nessun nag. Tutti i dati restano nel database WordPress locale. Il plugin non chiama mai server di terze parti (eccetto GitHub solo per il check aggiornamenti).
Architettura
Filter dbph_processing_register
Il cuore del plugin è un filter pubblico su cui ogni plugin DB dichiara i propri trattamenti:
add_filter( 'dbph_processing_register', function( $register ) {
$register[] = array(
'id' => 'mioplugin_invio_form',
'label' => __( 'Invio modulo contatti', 'mioplugin' ),
'status' => 'active',
'purpose' => __( 'Gestire le richieste di contatto degli utenti.', 'mioplugin' ),
'legal_basis' => __( 'Consenso (art. 6.1.a GDPR).', 'mioplugin' ),
'data_collected' => __( 'Nome, email, oggetto, messaggio.', 'mioplugin' ),
'retention' => __( '365 giorni, poi cancellazione automatica.', 'mioplugin' ),
'transfers' => __( 'Nessuno.', 'mioplugin' ),
);
return $register;
} );
Tutti i campi sono obbligatori. L'Hub non valida né normalizza il contenuto: la responsabilità è del plugin che dichiara.
Compatibilità con il filter legacy
Per compatibilità con installazioni che ancora usano il SEO Manager 1.2.x (filter dbseo_processing_register), l'Hub raccoglie automaticamente entrambi i filter, deduplicando per id. Il filter legacy verrà rimosso in DB Privacy Hub 2.0.0.
Filter dbph_policy_sections
Permette ad altri plugin/temi di rimuovere o riordinare sezioni del documento finale:
add_filter( 'dbph_policy_sections', function( $sections, $context ) {
// Esempio: rimuovi la sezione cookie se non vuoi importarla.
unset( $sections['cookie'] );
return $sections;
}, 10, 2 );
Le chiavi disponibili sono: header, titolare, finalita, trattamenti, cookie, destinatari, diritti, conservazione, modifiche, reclamo, footer.
Filter dbph_policy_destinatari
Permette di aggiungere destinatari custom alla detection automatica:
add_filter( 'dbph_policy_destinatari', function( $dest ) {
$dest[] = array(
'name' => 'Stripe Inc.',
'description' => __( 'Servizio di pagamento.', 'mio' ),
'country' => __( 'Stati Uniti (extra-UE)', 'mio' ),
);
return $dest;
} );
FAQ
Posso modificare a mano la pagina dopo che è stata generata?
Sì. Le modifiche manuali vengono però sovrascritte se clicchi "Rigenera pagina". Se vuoi modifiche persistenti, usa i filter dbph_policy_sections o intervieni nei trattamenti dichiarati dai singoli plugin.
Funziona senza il DB Cookie Manager? Sì. La sezione "Cookie e tecnologie simili" viene semplicemente omessa. Se installi il Cookie Manager 3.1.0+ in un secondo momento, basta cliccare "Rigenera pagina" e la sezione viene aggiunta.
Sostituisce il consulente privacy? No. Il plugin produce un documento tecnicamente accurato, ma la verifica e l'adattamento al contesto specifico del titolare restano una responsabilità professionale.
Licenza
GPL v2 or later. Vedi LICENSE.
Crediti
Sviluppato da Davide Bertolino. Parte dell'ecosistema plugin DB.
Changelog
1.6.0 — Bridge social e contenuti incorporati (2026)
Tooling e CI
- GitHub Actions CI — lint di sintassi su PHP 7.4 e 8.3 (matrice), PHPCS con WordPress Coding Standards (
phpcs.xml.dist) e verifica PHPCompatibilityWP per il requisito PHP 7.4+ - Workflow di release — al push di un tag
v*: verifica che il tag corrisponda alla versione nel plugin header e nella costanteDBPH_VERSION, builda lo ZIP con radicedb-privacy-hub/senza file di sviluppo e lo allega alla GitHub Release — l'asset è quello che l'auto-updater scarica (senza asset l'updater ripiegherebbe sullo zipball, che ha la cartella radice sbagliata) - Codebase allineata a WPCS — ~4.700 rilievi risolti tra auto-correzione (phpcbf) e interventi manuali: variabili globali prefissate in
uninstall.php, short ternary espliciti, commenti translators mancanti, annotazioniphpcs:ignoremotivate per i falsi positivi (sanitizzazione a valle, hook core WP); le esclusioni per scelte progettuali deliberate (tabelle custom, ora locale DSAR, export CSV in streaming) sono documentate nel ruleset composer.jsoncon scriptlint,phpcs,phpcbfper l'uso locale
Funzionalità
- Nuovo modulo
DBPH_Embed_Bridge— rileva le piattaforme terze i cui contenuti sono incorporati nel sito (YouTube, Vimeo, Facebook, Instagram, TikTok, X, LinkedIn, Spotify, Google Maps) tramite blocchi Gutenberg embed, iframe nei contenuti e plugin noti; i semplici link ai profili sono volutamente esclusi (un link non trasferisce dati) - Abilitazione manuale — checkbox nella pagina "Genera Privacy Policy" per dichiarare a mano le piattaforme che la scansione non può vedere (embed del tema, share button, page builder); le piattaforme rilevate automaticamente sono contrassegnate e dichiarate comunque
- Voci di registro automatiche — "Contenuti incorporati da piattaforme terze" (base: consenso art. 6.1.a, con rinvio al banner cookie) e "Remarketing e misurazione pubblicitaria" se è attivo un plugin pixel noto (PixelYourSite, Meta pixel, Facebook for WooCommerce, TikTok)
- Piattaforme come destinatari — descrittori precompilati con titolarità, paese e garanzie extra-UE (SCC/DPF), integrati nel merge destinatari della 1.5.0
- Contitolarità pagine social — checkbox che aggiunge alla policy il paragrafo sui dati Insights delle pagine social (art. 26 GDPR, CGUE C-210/16)
- La scansione dei contenuti è cachata (transient 12h, invalidato al salvataggio); il bridge è disattivabile con
add_filter( 'dbph_embed_bridge_enabled', '__return_false' ); catalogo piattaforme estendibile viadbph_embed_platforms - Fuori scope (dichiarato): social login e share button lato tema — per questi ultimi esiste appunto l'abilitazione manuale
1.5.0 — Modelli responsabili + merge destinatari (2026)
- Merge delle liste nella sezione "Destinatari" — la Privacy Policy ora mostra SEMPRE due blocchi distinti: "Responsabili del trattamento (art. 28 GDPR)" con le dichiarazioni esplicite, e "Altri destinatari" con autonomi titolari e servizi rilevati automaticamente (gateway di pagamento, SMTP, reCAPTCHA, webhook). Fino alla 1.4.0 le dichiarazioni esplicite nascondevano la detection automatica: su un e-commerce con responsabili dichiarati i gateway sparivano dal documento
- Dedup per nome — se un soggetto rilevato è già dichiarato esplicitamente, prevale la dichiarazione (il fatto giuridico) e la voce rilevata viene omessa
- Modelli rapidi di responsabili — la pagina "Responsabili esterni" include una checklist di categorie tipiche (commercialista, webmaster/agenzia, hosting, fatturazione elettronica, email transazionale, backup) con voci precompilate a un click; segnaposto da sostituire con la ragione sociale reale, avviso in pagina finché restano segnaposto non sostituiti, filter
dbph_responsabili_templatesper estendere l'elenco - Fix notices — i messaggi di conferma delle azioni DSAR manuali (registrata/aggiornata/eliminata) erano usati nei redirect ma mancavano dalla mappa e non venivano mai mostrati
1.4.0 — Ponte privacy WooCommerce (2026)
- Nuovo modulo
DBPH_Woo_Bridge— se WooCommerce è attivo, il plugin dichiara automaticamente sul registro i trattamenti e-commerce standard: gestione ordini e spedizione (base contrattuale), fatturazione e obblighi fiscali (obbligo di legge, 10 anni), account cliente (solo se la registrazione è abilitata), pagamenti online (solo se esistono gateway online abilitati) e telemetria WooCommerce verso Automattic (solo se l'opzione di tracking è attiva) - Detection gateway di pagamento — i gateway online abilitati vengono aggiunti ai destinatari della Privacy Policy come autonomi titolari, con descrittori precompilati per Stripe, PayPal, Klarna, Nexi/XPay, Braintree, Mollie, Amazon Pay e Satispay (paese e garanzie di trasferimento incluse) e descrittore generico per i gateway non riconosciuti; i metodi offline (contrassegno, bonifico, assegno) sono esclusi
- Sezione diritti integrata — la Privacy Policy generata include il chiarimento sul limite alla cancellazione dei dati fiscali/contabili (art. 17.3.b GDPR) con spiegazione dell'anonimizzazione degli ordini
- Il ponte è disattivabile con
add_filter( 'dbph_woo_bridge_enabled', '__return_false' ) - Fuori scope (da dichiarare manualmente): corrieri (Responsabili esterni) e consensi marketing delle estensioni
1.3.1 — Bugfix e hardening (2026)
- Fix timezone modulo DSAR — cron di scadenza e contatori "in scadenza / scadute" ora usano l'ora locale del sito, coerentemente con i timestamp salvati (prima erano sfasati dell'offset del fuso orario)
- Fix hook export — il completamento dell'export dati personali viene registrato usando l'ID richiesta passato dall'hook core (funziona anche per export via WP-CLI); rimossa l'euristica inattendibile su
items_removednel completamento erase - Validazione DSAR manuale — datetime non parsabili non producono più date epoch 1970; lo status è validato contro la whitelist; email normalizzata se valida
- Fix contatore per plugin — il raggruppamento delle voci del registro trattamenti riconosce correttamente prefissi di lunghezza arbitraria (es.
dbseo_*) - Fix numerazione Privacy Policy — se il Cookie Manager è attivo ma non produce sezioni cookie, indice e numerazione delle sezioni restano coerenti
- Registro consensi — il limite di righe viene propagato alle fonti (
args['limit']) per evitare merge in memoria illimitati - Nuovo: conservazione dati alla disinstallazione — opzione "Conserva i dati alla disinstallazione" (default OFF) che preserva log DSAR, archivio policy e impostazioni per finalità di accountability (art. 5.2 GDPR)
Read the full README on GitHub →