=== BulkSweep – Bulk Deleter ===
Contributors:       rabbyitfirm
Donate link:        https://rabbyitfirm.com/
Tags:               bulk delete, woocommerce, orders, products, customers, cleanup, media, posts, pages, comments
Requires at least:  5.0
Tested up to:       6.9
Requires PHP:       7.2
Stable tag:         1.0.0
License:            GPLv2 or later
License URI:        https://www.gnu.org/licenses/gpl-2.0.html

Bulk delete WooCommerce orders, products, customers, posts, pages, media, comments and more — with filters, dry-run preview and activity log.

== Description ==

**BulkSweep** is a fast, safe, and easy-to-use admin tool that lets you delete any WordPress or WooCommerce data in bulk — with smart filters, a live count preview, dry-run mode, batch processing, and a full activity log.

= Supported Entity Types =

**WooCommerce (requires WooCommerce)**

* Orders — filter by status and date range
* Products — filter by status and date
* Customers — filter by date range (role: customer/subscriber)
* Coupons — bulk remove discount codes
* Product Reviews

**WordPress Core**

* Posts — filter by status and date
* Pages — filter by status and date
* Media / Attachments — removes files from disk too
* Comments — filter by status and type (comment, pingback, trackback)
* Users (non-admin) — administrators are always protected
* Terms & Taxonomies — categories, tags, product attributes

= Key Features =

* **Filter-Based Bulk Delete** — target items by status, date range, taxonomy and more
* **Specific ID Mode** — paste a list of IDs for surgical single or multi-item deletion
* **Dry Run Mode** — preview exactly what would be deleted without deleting anything
* **Live Preview Count** — see how many items match your filters before you act
* **Batch Processing** — configurable batch limit prevents PHP timeouts on large sites
* **Force Delete or Trash** — choose permanent deletion or move to trash
* **Double Confirmation** — checkbox + JS confirm dialog prevents accidents
* **Activity Log** — every operation logged with user, type, count and timestamp (last 200 entries)
* **WooCommerce Detection** — WC entity types are automatically disabled if WooCommerce is not active
* **Admin-protected** — administrators and the currently logged-in user are always safe
* **Translation Ready** — all strings wrapped in i18n functions

= How to Use =

1. Go to **BulkSweep** in the WordPress admin sidebar
2. Choose a data type from the left panel
3. Set your filters (status, date range, etc.)
4. Click **Preview Count** to see how many items match
5. Enable **Dry Run** to simulate without deleting (recommended for first run)
6. Check the confirmation checkbox and click **Delete Now**

= Safety Recommendations =

* Always take a full database backup before running bulk deletions
* Use **Dry Run** first to verify the count is what you expect
* Start with a small batch size (50–100) on shared hosting
* Check the **Activity Log** after each run

== Installation ==

1. Upload the `bulksweep` folder to `/wp-content/plugins/`
2. Activate the plugin through the **Plugins** screen in WordPress Admin
3. Go to **BulkSweep** in the admin sidebar
4. Select a data type and configure your filters

== Frequently Asked Questions ==

= Can I undo a bulk deletion? =

If **Force Delete** is turned off, items are moved to trash and can be restored. With Force Delete enabled, deletion is permanent and cannot be undone. We strongly recommend taking a database backup first.

= Will it ever delete administrator accounts? =

No. Administrators and the currently logged-in user are always protected and will never be deleted, regardless of filters.

= What happens if I have 50,000 orders to delete? =

The batch limit (configurable in Settings, default 100) means only 100 items are deleted per request. Run the deletion multiple times until the Preview Count shows 0. This prevents PHP timeouts on shared hosting.

= Does it work without WooCommerce? =

Yes. If WooCommerce is not active, WooCommerce-specific entity types (orders, products, customers, coupons, reviews) are automatically disabled. All WordPress-native types work without WooCommerce.

= Is it translation ready? =

Yes. All user-facing strings are wrapped in standard WordPress i18n functions and the text domain is `bulksweep`.

= What does Dry Run do? =

Dry Run shows you how many items would be deleted by your current filters without actually deleting anything. It respects the batch limit. Use it to verify your filters are correct before committing to a real deletion.

== Screenshots ==

1. Main panel with entity type selector and filter options
2. Dry Run mode showing count preview before deletion
3. Specific ID mode for surgical deletion of individual items
4. Activity log showing all past deletion operations
5. Settings page with batch size configuration

== Changelog ==

= 1.0.0 =
* Initial release — renamed to BulkSweep
* Fixed: Orders date range filter was overwriting itself when both date_from and date_to were set
* Fixed: Media (attachment) post_status now correctly defaults to 'inherit'
* Fixed: PHP notice — esc_html() was incorrectly wrapping an integer inside printf()
* Fixed: $saved variable was undefined on first settings page load
* Fixed: Dry-run and Delete Now button labels are now fully translatable
* Fixed: Clear Log confirmation string is now translatable
* Fixed: Admin JS asset hook suffixes now match correct menu slug
* Support for 11 entity types (5 WooCommerce, 6 WordPress core)
* Filter-based and specific-ID deletion modes
* Dry Run mode (no-op preview)
* Live preview count
* Batch processing with configurable limit
* Activity log (last 200 entries)
* Force delete / trash option
* Double confirmation gate
* Full i18n / translation ready
* uninstall.php for clean removal

== Upgrade Notice ==

= 1.0.0 =
Initial release. Always backup your database before performing bulk deletions.
