=== s404 Orphaned Attachment Scanner ===
Contributors:      surviving404
Tags:              media, images, cleaner, orphaned, attachment
Requires at least: 6.3
Tested up to:      7.1
Requires PHP:      8.2
Stable tag:        1.1.4
License:           GPL-2.0-or-later
License URI:       https://www.gnu.org/licenses/gpl-2.0.html

Scan your WordPress Media Library for orphaned attachments and safely delete them to reclaim disk space.

== Description ==

**s404 Orphaned Attachment Scanner** helps you find and remove media files that are sitting in your WordPress Media Library but are not used anywhere in your installation — not in posts, pages, widgets, theme customizer, ACF fields, WooCommerce products, page-builder data, or any active plugin's settings.

= Features =

* **Batched AJAX scan** — never times out on large libraries
* **9 detection layers** — post content, post meta, featured images, widgets, theme customizer, ACF, WooCommerce, page builders (Elementor, Beaver Builder, Divi, Bricks…), ALL active plugin wp_options
* **Filesystem scan** — checks theme files and optionally the entire WP installation for hard-coded references
* **Format filtering** — scan only images, video, audio, documents, or specific formats (JPEG, PNG, WebP, SVG…)
* **Age threshold** — only flag files older than N days, protecting freshly uploaded assets
* **Trash & Permanent Delete** — move items to Trash for safety (requires `define('MEDIA_TRASH', true);` in your `wp-config.php` to enable the media bin)
* **Deletion log** — every action is recorded with timestamp and username in your local history
* **Bulk actions** — select, trash, delete, exclude, or export to CSV
* **Exclusion list** — permanently hide specific IDs, MIME types, or path patterns from scan results
* **Scheduled scans** — WP-Cron with daily/weekly/monthly frequency and optional email report
* **Developer hooks** — `s404as_is_attachment_used` filter, `s404as_before_delete` / `s404as_after_delete` actions

= Usage =

1. Go to **Tools → S404OrphanedAttachmentScanner**
2. Optionally select format filters
3. Click **Start Scan**
4. Review results — preview thumbnails, file sizes, MIME types
5. Select items and use bulk actions, or use per-row buttons
6. Export a CSV for your records before deleting

== Installation ==

1. Upload the `s404-orphaned-attachment-scanner` folder to `/wp-content/plugins/`
2. Activate through **Plugins → Installed Plugins**
3. Navigate to **Tools → S404OrphanedAttachmentScanner**

== Frequently Asked Questions ==

= Will this delete anything automatically? =

No. The plugin never deletes anything automatically. All destructive actions require explicit user confirmation.

= What is the "Filesystem" detector? =

It searches your active theme's PHP/HTML/JS/CSS files for any hard-coded references to an image's filename or URL. You can also enable full-installation scanning (all files under ABSPATH) in Settings.

= Can I protect specific images from being flagged? =

Yes — add their attachment IDs to the Exclusions list in Settings, or click the "Exclude" button on any result row.

= Does it work with WooCommerce / ACF / Elementor? =

Yes. The relevant detectors activate automatically when those plugins are present.

= Why is the "Trash" button not working or missing in Media Library? =

By default, WordPress disables the recycle bin for media files. To enable it and make the "Move to Trash" button functional, add this line to your `wp-config.php` file:
`define( 'MEDIA_TRASH', true );`

= What PHP version is required? =

PHP 7.4 or higher.

== Screenshots ==

1. Dashboard — scan controls with format filters
2. Results table — sorted by file size with bulk actions
3. Settings page — tabbed interface
4. Deletion log

== Changelog ==

= 1.0.0 =
* Initial release

== Upgrade Notice ==

= 1.0.0 =
Initial release. No upgrade steps needed.

