WordPress Playground “Try Now” & Bug Fixes
WordPress Playground
– FIXED: “Try Now” button was missing from the wordpress.org/plugins/media-wipe/ page — blueprint.json was inside the plugin ZIP instead of the SVN assets directory where WordPress.org reads it from
– ADDED: blueprint.json now lives in .wordpress-org/blueprints/ so it is deployed to the SVN assets folder on every push, enabling the live preview button on the plugin directory page
– FIXED: Asset-deploy GitHub Actions workflow only fired on the trunk branch — added main branch as a trigger so blueprint and asset updates are deployed automatically
Bug Fixes
– FIXED: Dashboard media statistics counted trashed attachments, causing the total to be higher than what “Delete All Media” would actually delete (trashed items are excluded from the delete-all operation)
– FIXED: PHP 8.x deprecation notice in the unused media scanner — $_POST[‘nonce’] was accessed directly without an isset() guard before being passed to wp_verify_nonce()
– FIXED: Dead ini_get(‘safe_mode’) condition in the delete-all function — safe_mode was removed in PHP 7.0; the plugin requires 7.4+, so the check was always false and set_time_limit() was silently called regardless
– REMOVED: Unreachable fetch_all_media POST handler in the Delete Selected page — no form submits that field and the result variable was never used
Material Design 3 UI Revamp & Critical Bug Fixes
UI / Design
– NEW: Complete Material Design 3 visual overhaul across all plugin pages
– NEW: MD3 design token system (md3-tokens.css) — colour, typography, shape, and motion tokens
– NEW: Unified MD3 Snackbar notification system replacing old toast/notification stack
– NEW: MD3 Tab bar navigation, page headers, chip filters, cards, switches, and dialogs
– IMPROVED: Selected row highlight changed from bright blue to a subtle neutral tint
Bug Fixes
– FIXED: “Delete All Media” button did nothing — Continue step was blocked by stopPropagation on the dialog container preventing the event from reaching the delegated handler; both Next/Back buttons now use direct binding
– FIXED: “Delete All Media” AJAX nonce mismatch — PHP was verifying against a separate nonce action; all AJAX operations now share the single unified nonce
– FIXED: “Delete Selected Media” always returned “Security check failed” — PHP verified against media_wipe_delete_unused but JS sent media_wipe_ajax_nonce; now consistent
– FIXED: Recycle Bin “Enable” toggle showed stale state until hard reload — settings save was processed after the HTML was already rendered; handler moved to top of function so the form reflects saved state on the same response
– FIXED: Deletion History Activity/Security filter chips had no effect — DataTables was not loaded on the history page so the column search never ran; DataTables is now enqueued for the history page
New Feature: Recycle Bin (Soft Delete)
– NEW: Recycle Bin — deleted media files are now moved to trash instead of being permanently removed, when the feature is enabled
– NEW: Configurable retention period (7, 14, 30, 60, or 90 days) — files are auto-purged by WP-Cron after the chosen period
– NEW: Recycle Bin admin page with a visual grid showing all trashed files with thumbnails, file size, trash date, and days-remaining badge
– NEW: One-click restore — send any trashed file back to the media library instantly
– NEW: Bulk actions — Select All, Select None, Restore Selected, Delete Permanently, and Empty Trash
– NEW: Per-file restore and permanent delete buttons on each card
– NEW: Auto-purge WP-Cron job scheduled on plugin activation, removed on deactivation
– NEW: Enable/disable toggle and retention period selector directly on the Recycle Bin page
– NEW: Designed empty state with animated illustration and feature hints when trash is empty
– IMPROVED: All deletion paths (Delete All, Delete Selected, Delete Unused) now route through the recycle bin when enabled
Bug Fixes & Security
– FIXED: Delete unused files nonce was silently ignored in the AJAX call, causing deletions to fail
– FIXED: PHP notices from references to undefined settings keys (require_backup_confirmation, require_text_confirmation)
– FIXED: filesize() crash when an attachment’s physical file is missing from disk
– FIXED: Featured images on draft/private/pending posts were incorrectly flagged as unused
– FIXED: header_image and background_image customizer settings were never actually checked, allowing those media files to be falsely marked unused
– FIXED: PHP warning when iterating menu items on menus with no items (wp_get_nav_menu_items returns false)
– FIXED: N+1 database query in unused media scanner replaced with a single query
– SECURITY: Removed nonce fallback in ajax_delete_unused that weakened CSRF protection
– SECURITY: Removed unconditional error_log() calls that fired in production on every failed nonce
– SECURITY: IP address logging now uses only REMOTE_ADDR instead of spoofable X-Forwarded-For headers
– PERFORMANCE: Dashboard media size calculation is now cached for 24 hours (cache auto-clears on media add/delete)
– FIXED: Static settings cache was not invalidated after saving settings in the same request
– REMOVED: Instant Images / Unsplash integration feature
WordPress 6.9 Compatibility
– Few minor bug fixes and improvements.
Enhanced DataTable Interface & User Experience
– Few minor bug fixes and improvements.
Enhanced DataTable Interface & User Experience
– ENHANCED: Professional DataTable styling consistency between Delete Selected and Delete Unused tables
– IMPROVED: Delete Unused table now matches Delete Selected table design while preserving unique Confidence column
– ENHANCED: Unified button styling and spacing across all DataTable interfaces
– IMPROVED: Consistent hover effects, transitions, and responsive behavior
– ENHANCED: Mobile optimization with horizontal scrolling and touch-friendly controls
– IMPROVED: DataTable configuration standardization (25 items per page, consistent sorting)
– ENHANCED: Visual consistency with matching table headers, row styling, and image thumbnails
– IMPROVED: Professional confidence badge styling (High/Medium/Low indicators)
– ENHANCED: Streamlined user experience with identical interaction patterns across features
– PERFORMANCE: Optimized CSS and JavaScript for better loading performance
🎉 MAJOR RELEASE: Complete Interface Transformation
– REVOLUTIONARY: Complete plugin simplification – removed Settings and Support pages
– STREAMLINED: Clean 4-page structure: Dashboard → Delete Selected → Delete Unused → Deletion History
– ENHANCED: Delete Unused with beautiful “No Files Found” messages and smarter defaults
– PROFESSIONAL: Modern Deletion History with DataTable, search, sort, and pagination
– OPTIMIZED: Desktop experience with max-width constraints for large screens
– PERFORMANCE: Removed 500+ lines of unused code for 20% faster loading
– DESIGN: Beautiful gradient icons, modern styling, and WordPress integration
– POSITIONING: Logical menu placement right after Media menu (position 11)
– FIXED: Critical undefined variable errors and broken functionality
– UX: Simplified interface with reduced cognitive load and better feedback
Major Interface Improvements & Bug Fixes
– FIXED: Critical undefined variable error in Deletion History page
– ENHANCED: Professional DataTable interface for Deletion History with search, sort, and pagination
– ENHANCED: Beautiful statistics overview with visual activity counts
– SIMPLIFIED: Removed broken “View Details” functionality for cleaner interface
– IMPROVED: Desktop optimization with max-width constraints for large screens (1920px+)
– IMPROVED: Menu positioning – moved to position 11 (right after Media menu)
– PERFORMANCE: Removed 500+ lines of unused JavaScript and CSS code
– DESIGN: Modern gradient icons and professional button styling
– UX: Enhanced mobile responsiveness across all pages
Streamlined Menu Structure
– Removed Settings page – moved logging toggle directly to Deletion History page
– Removed Support page – plugin interface is now self-explanatory
– Removed warning sections from Delete Selected and Delete Unused pages
– Clean 4-page structure: Dashboard → Delete Selected → Delete Unused → Deletion History
– Removed Advanced Scan option – Basic scan is now the optimal default
– Added beautiful “No Files Found” message for empty media libraries with encouraging feedback
– Improved scan result handling with better user notifications
– Safety options unchecked by default for more comprehensive scanning
Plugin Website
Visit website
Share Post
Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.