WP-Sweep

Description

This plugin cleans up:

  • Revisions
  • Auto drafts
  • Deleted comments
  • Unapproved comments
  • Spammed comments
  • Deleted comments
  • Orphaned post meta
  • Orphaned comment meta
  • Orphaned user meta
  • Orphaned term meta
  • Orphan term relationships
  • Unused terms
  • Duplicated post meta
  • Duplicated comment meta
  • Duplicated user meta
  • Duplicated term meta
  • Transient options
  • Optimizes database tables
  • oEmbed caches in post meta

This plugin uses proper WordPress delete functions as much as possible instead of running direct delete MySQL queries.

Following delete functions are used:

  • wp_delete_post_revision()
  • wp_delete_post()
  • wp_delete_comment()
  • delete_post_meta()
  • delete_comment_meta()
  • delete_user_meta()
  • delete_term_meta()
  • wp_remove_object_terms()
  • wp_delete_term()
  • delete_transient()
  • delete_site_transient()

WP-Sweep WP REST API Endpoints
* GET /wp-json/sweep/v1/count/<Name>. Get the number of items that we will be sweeping.
* GET /wp-json/sweep/v1/details/<Name>. Get the details of the items that we will be sweeping.
* DELETE /wp-json/sweep/v1/sweep/<Name>. Runs sweep for that particular item.

WP-Sweep WP-CLI Commands
* wp sweep --all. Runs sweep for all items.
* wp sweep <Name>. Runs sweep for that particular item.
* wp sweep <Name1> <Name2>. Run sweep for the selected items.

WP-Sweep Available Items:
* revisions
* auto_drafts
* deleted_posts
* unapproved_comments
* spam_comments
* deleted_comments
* transient_options
* orphan_postmeta
* orphan_commentmeta
* orphan_usermeta
* orphan_termmeta
* orphan_term_relationships
* unused_terms
* duplicated_postmeta
* duplicated_commentmeta
* duplicated_usermeta
* duplicated_termmeta
* optimize_database
* oembed_postmeta

WP-Sweep Available Filters:

WP-Sweep exposes a number of filters so you can customise what gets swept and protect data you do not want deleted.

  • wp_sweep_postmeta_whitelist (array) — Meta keys to exclude when sweeping orphaned and duplicated post meta. Return an array of meta_key values to keep them from being deleted. Default: empty array.
  • wp_sweep_commentmeta_whitelist (array) — Meta keys to exclude when sweeping orphaned and duplicated comment meta. Default: empty array.
  • wp_sweep_usermeta_whitelist (array) — Meta keys to exclude when sweeping orphaned and duplicated user meta. Default: empty array.
  • wp_sweep_termmeta_whitelist (array) — Meta keys to exclude when sweeping orphaned and duplicated term meta. Default: empty array.
  • wp_sweep_excluded_taxonomies (array) — Taxonomies to exclude from the orphaned term relationships sweep. Default: array( 'link_category' ).
  • wp_sweep_excluded_termids (array) — Term IDs to exclude from the unused terms sweep. Default: the default taxonomy terms plus any term that is a parent of another term.
  • wp_sweep_total_count (int $count, string $name) — Filter the total number of rows reported for a given sweep type (used for the “% of” column).
  • wp_sweep_count (int $count, string $name) — Filter the number of items that will be swept for a given sweep name.
  • wp_sweep_details (array $details, string $name) — Filter the sample list of items shown in the details view for a given sweep name.
  • wp_sweep_sweep (string $message, string $name) — Filter the result message returned after a sweep has run.

Example — protect specific post meta keys from being swept:

add_filter( 'wp_sweep_postmeta_whitelist', function ( $meta_keys ) {
    $meta_keys[] = '_my_plugin_setting';
    $meta_keys[] = '_keep_this_meta';
    return $meta_keys;
} );

Example — exclude an additional taxonomy from the orphaned term relationships sweep:

add_filter( 'wp_sweep_excluded_taxonomies', function ( $taxonomies ) {
    $taxonomies[] = 'product_type';
    return $taxonomies;
} );

WP-Sweep is not compatible with the following plugins:
* Custom Fonts
* Elementor Popup Builder
* MailPress
* Meta Slider
* Polylang
* Slider Revolution
* Viba Portfolio
* WPML

Development

Credits

Donations

I spent most of my free time creating, updating, maintaining and supporting these plugins, if you really love my plugins and could spare me a couple of bucks, I will really appreciate it. If not feel free to use it without any obligations.

Screenshots

Installation

  1. Upload wp-sweep folder to the /wp-content/plugins/ directory
  2. Activate the WP-Sweep plugin through the ‘Plugins’ menu in WordPress
  3. You can access WP-Sweep via WP-Admin -> Tools -> Sweep

FAQ

Coming soon …

Reviews

WP-Sweep is a simple yet powerful plugin that helps keep your WordPress site running smoothly. It cleans up unnecessary data like post revisions, trashed posts, spam comments, unused terms, and more — all using native WordPress functions, which makes it safer than many alternatives. We’ve used WP-Sweep on multiple websites and it’s never caused any issues. It’s lightweight, user-friendly, and does exactly what it promises. The interface is clear and makes it easy to choose what to clean. Highly recommended for anyone looking to optimize their WordPress database without the risk of breaking anything.
2025-01-22
great and simple plugin, no licence shit – it just works, thanks!
Read all 139 reviews

Contributors & Developers

“WP-Sweep” is open source software. The following people have contributed to this plugin.

Contributors

“WP-Sweep” has been translated into 22 locales. Thank you to the translators for their contributions.

Translate “WP-Sweep” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.2.0

  • NEW: Per-type meta key filters (wp_sweep_postmeta_whitelist, wp_sweep_commentmeta_whitelist, wp_sweep_usermeta_whitelist, wp_sweep_termmeta_whitelist) to protect metadata from accidental deletion
  • NEW: Documented all available filters in README

1.1.9

  • NEW: Bump WordPress 7.0
  • NEW: Add CLAUDE.md

1.1.8

  • FIXED: Added current_user_can() Check For AJAX Calls

1.1.7

  • FIXED: Pass in default blank string to fix fatal error

1.1.6

  • NEW: Re-org wp-sweep.php to inc/class-wpsweep.php
  • NEW: Bump to WordPress 6.2

1.1.5

  • NEW: Bump to WordPress 5.8

1.1.4

  • FIXED: Replaced %_transient_% with %\_transient\_%. Escape _ in MySQL if not it is being used as a wildcard character. Props @janrenn.

1.1.3

  • FIXED: Changed permissions check to activate_plugins because update_plugins will return false when DISALLOW_FILE_MODS=true.

1.1.2

  • NEW: Changed permission check to update_plugins for better MultiSite compatibility.
  • NEW: Bump min PHP version to 5.6.

1.1.1

  • NEW: wp_sweep_excluded_termids filter.

1.1.0

  • NEW: Added WP Rest API Endpoint support, sweep/v1/count/<Name>, sweep/v1/details/<Name>, and sweep/v1/sweep/<Name>
  • FIXED: Follow as close as possible to WordPress Coding Standards

1.0.12

  • NEW: Bump to WordPress 4.9
  • NEW: Update README to incompatible plugins

1.0.10

  • FIXED: Invalid plugin head ‘This plugin has an invalid header.’

1.0.9

  • NEW: Support for Codeclimate
  • FIXES: Uses get_sites() on WordPress 4.6. This should fix deprecated notices.
  • FIXES: Fixes translation placeholder count. Props @pedro-mendonca.
  • FIXES: Use manage_options capability as it conflicts with Admin Menu Editor on multisite installs. Props @EusebiuOprinoiu.

1.0.8

  • NEW: Added wp_sweep_excluded_taxonomies filter to allow more than just link_category taxonomy
  • NEW: Support for WP-CLI wp sweep

1.0.7

  • FIXES: Use custom query to delete Orphaned Term Relationship if wp_remove_object_terms() fails

1.0.6

  • NEW: Delete ‘languages’ folder from the plugin
  • NEW: Use translate.wordpress.org to translate the plugin
  • FIXED: Works only with WordPress 4.4 because of new term meta

1.0.5

  • FIXED: apply_filters() wrong arguments

1.0.4

  • NEW: oEmbed caches in post meta Sweep
  • NEW: Add POT file for translators

1.0.3

  • NEW: AJAX Sweep All
  • NEW: AJAX Sweeping
  • NEW: View details of sweep
  • NEW: Optimize DB sweep
  • NEW: User hint and confirmation. Props @SiamKreative
  • FIXED: Division by zero. Pros @barisunver

1.0.2

  • FIXED: Use term_id for wp_remove_object_terms()
  • FIXED: number_format_i18n() issues after sweeping

1.0.1

  • NEW: Moved plugin location to WP-Admin -> Tools -> Sweep
  • NEW: Add Deleted Post Sweep
  • FIXED: Use forced_delete for wp_delete_post() and wp_delete_comment();
  • FIXED: If orphaned meta has an object id of 0, use SQL query to delete

1.0.0

  • Initial release
Morty Proxy This is a proxified and sanitized view of the page, visit original site.