DataPrune

Changelog

1.2.1

  • 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
  • New: Visual recovery grid with thumbnail previews
  • New: Search and filter in recovery page
  • Updated: Plugin metadata (Author: AiReport, Requires at least: 5.8, Requires PHP: 7.4)
  • Added: English (en_US) translations

1.0.3

  • Fix: Protected media detection — site logo, favicon, header/background images are now excluded from orphan queries
  • New: wbdp_protected_media_ids filter for third-party extensions

1.0.2

  • Fix: AJAX nonce field name mismatch causing -1 response on media deletion

1.0.1

  • New: Media tab with orphan detection, MIME type, size, and date range filters
  • New: AJAX batch processing with progress modal (solves 503 timeout on large datasets)
  • New: Date range filter (from/to) replacing the simple “older than” field
  • Updated: Tab slug for media changed to media-files

1.0.0

  • Initial release
  • Bulk delete: posts, pages, CPT, revisions, trash, comments, users, taxonomy terms, post meta, user meta
  • Scheduled deletion with WP-Cron
  • Activity log
  • Security settings (trash mode, confirmation, log retention)
  • English translation

Plugin Website
Visit website

Author
aireport
Version:
1.2.1
Last Updated
April 6, 2026
Requires
WordPress 5.8
Tested Up To
WordPress 6.9.4
Requires PHP
7.4

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.