Plugin renamed to DataPrune (slug: dataprune, text domain: dataprune)
Removed Plugin URI header (was identical to Author URI — WP.org requirement)
Updated description: removed comparative marketing language per WP.org guidelines
1.2.0
Fix CRITICO: il filtro “Più vecchi di” nei task programmati veniva ignorato — tutti i contenuti corrispondenti al tipo/stato venivano eliminati indipendentemente dall’età. I parametri older_than_value/older_than_unit ora vengono convertiti correttamente in datetime prima dell’esecuzione
Fix: aggiornamento immediato di next_run all’avvio di ogni invocazione cron — previene la doppia esecuzione del task da parte di run_due_tasks() mentre il cron chaining è ancora attivo
Fix: il flag force_recovery ora viene correttamente gestito in delete_batch() — gli snapshot di recupero vengono salvati anche quando la modalità cestino è attiva (per i task programmati)
1.1.9
New: “Esegui ora” usa AJAX batch con progress modal — nessun timeout 503, elabora l’intero dataset senza ricaricare la pagina
New: Esecuzione automatica WP-Cron a catena — ogni invocazione elabora un batch, poi schedula automaticamente il successivo finché non rimangono elementi
New: Snapshot di recupero forzata per i task di tipo “Post” — possibilità di ripristino dalla pagina Recovery in caso di errore (non applicabile al task “Svuota Cestino”)
1.1.8
New: Filtro per categorie disponibile anche nel form dei task programmati (Automazione)
Fix: Errore 503 durante l’esecuzione manuale dei task programmati — aggiunto time-guard di 20 secondi per invocazione; se rimangono elementi, verranno eliminati alla successiva esecuzione
1.1.7
New: Redesigned admin UI — Dashboard overview page with stat cards and activity stream; Bulk Delete page with content-type selector cards and live counts; Log page with stats header; Scheduled page with task card list
Fix: Added phpcs:ignore for inherent DirectDatabaseQuery/NoCaching in log, scheduler, recovery, comments, meta, posts, media classes (Plugin Check WARNINGs)
Fix: Added phpcs:ignore for NonceVerification.Missing/Recommended in admin page renderers — nonce is verified via WBDP_Helper::verify_request() (Plugin Check WARNING false positives)
Fix: Added phpcs:ignore for PostNotIn_exclude in delete-users class — user exclusion is inherently required for admin safety (Plugin Check WARNING false positive)
Fix: Added NoCaching suppression to uninstall.php DROP TABLE queries
Fix: Rewrote WBDP_Recovery::count_items() to use explicit if/else instead of ternary to resolve NotPrepared PHPCS ERROR
Fix: Removed .DS_Store files and .gitignore from plugin assets (Plugin Check ERROR — hidden_files)
Fix: Updated “Tested up to” to 6.9 in plugin header and readme (Plugin Check ERROR — outdated/mismatched header)
1.1.5
Fix: Added /* translators: */ comments to all i18n strings with placeholders (Plugin Check ERROR — WordPress.WP.I18n.MissingTranslatorsComment)
Fix: Replaced unordered %s, %d placeholders with ordered %1$s, %2$d in recovery success message (Plugin Check ERROR — WordPress.WP.I18n.UnorderedPlaceholders)
Fix: Wrapped _n() output in esc_html() in recovery page (Plugin Check ERROR — EscapeOutputDocumentedFunctions)
Fix: Removed all .DS_Store files from the plugin directory (Plugin Check ERROR — hidden_files)
Fix: Updated “Tested up to: 6.8” (Plugin Check ERROR — outdated WP version)
Fix: Replaced date() with gmdate() in helper, log, and scheduler classes (Plugin Check WARNING — WordPress.DateTime.RestrictedFunctions)
Fix: Added wp_unslash() before all sanitize_*() calls on $_POST/$_GET data (Plugin Check WARNING — WordPress.Security.ValidatedSanitizedInput.MissingUnslash)
Fix: Added phpcs:disable WordPress.NamingConventions.PrefixAllGlobals to all template files (local variables in included files)
Fix: Removed deprecated load_plugin_textdomain() call — WordPress auto-loads translations for WP.org plugins since 4.6
Fix: Added phpcs:ignore for inherent DirectDatabaseQuery/SchemaChange in uninstall.php
1.1.4
New: Donation page inside the plugin admin (DataPrune → Donate)
New: uninstall.php — custom tables and options are now removed on plugin deletion (GPL/WP.org compliance)
Fix: date() replaced with wp_date() throughout — dates now respect WordPress timezone settings
Fix: HTML tags inside esc_html_e() in recovery page notes (tags were being escaped and shown as text)
Fix: Unescaped CSS class echoes in recovery grid template
Fix: Deprecated get_users([‘who’=>’authors’]) replaced with capability parameter (WP 5.9+)
Fix: Hardcoded Italian strings in admin.js moved to wp_localize_script for full i18n support
Fix: Admin CSS header updated; GPL-2.0+ license header added to all PHP/JS/CSS files
Fix: readme.txt — tags reduced to 5, short description shortened to ≤150 chars (WP.org validator)
1.1.3
Fix: Fatal error on activation — activation/deactivation hooks moved to file scope (WordPress best practice)
Fix: Scheduler “revisions” and “trash” task types now use batch processing (previously called non-existent methods)
1.1.2
Plugin renamed from WP Bulk Delete Pro to ExpirePress Delete (historical)
1.1.1
Scheduled tasks: added “Delete associated media” option for post deletion tasks
Scheduler now uses batch processing (no timeout on large datasets)
1.1.0
New: Recovery System — snapshot and restore permanently deleted items