Understand every diagnostic and cleanup operation
Open Tools → Optimization Tools and select one tool. Diagnostic analysis does not delete source data. Quick maintenance is different: after confirming its selected tasks, it finds and removes eligible records in batches.
Database options and metadata
| Tool | Findings and available changes |
|---|---|
| Autoload analyzer | Measures options automatically loaded by WordPress. Disable autoload preserves the value and uses WordPress's native API. Important configuration options are protected. |
| Plugin option ownership | Matches known and installed plugin prefixes. An absent provider is a clue, not proof. Only options attributed to providers that are not installed offer deletion; inactive and unknown providers remain report-only. |
| Orphaned metadata | Finds missing owners for post, comment, term, user and WooCommerce order-item metadata. Owners and values are rechecked before removal. |
| Expired transients | Removes expired database-stored site transients. Renewed values are retained. Network transients and external object-cache entries are outside the report. |
| Duplicate post metadata | Removes selected exact duplicates while retaining the first row. Equal repeated values can be intentional; review the owner's contract. |
| Database table maintenance | Optimizes selected tables registered for the current site. Shared network tables and other sites are excluded. Database-reported free allocation is not a guaranteed disk saving. |
In Autoload analyzer, Minimum option size (KB) filters displayed rows but does not exclude smaller options from the running autoload total. Each results page is sorted by size. Totals are provisional until the analysis completes. Disabling autoload can help infrequently used options but may add individual reads for frequently used settings. Option values are not displayed or exported.
In Plugin option ownership, use Option name starts with to focus the report. Unknown providers → Include for manual investigation includes unattributed names. Other plugins, must-use code or the theme may still read an option whose suspected provider is absent. This diagnostic does not replace a product's documented uninstall or migration cleanup.
Users — entire network is available only to network super administrators because multisite user metadata is shared. Quick maintenance never selects that scope. The tool does not inspect arbitrary plugin metadata tables or WooCommerce HPOS order metadata.
Scheduled tasks
Action Scheduler diagnostics provides status counts and a selectable status report with action IDs, hooks, groups, scheduled times, overdue indications and detected callbacks. Open leads to the native scheduler filtered by hook/status. Inspect logs there before retrying or removing jobs. This diagnostic runs, retries and deletes no actions. Live workers can shift pagination; repeat the report to verify persistent issues.
WP-Cron diagnostics shows each occurrence's timestamp, overdue duration, recurrence, interval, callbacks, argument preview and argument fingerprint. Common secret-named arguments are redacted. Repeated hook/argument combinations are counted but are not assumed redundant. If DISABLE_WP_CRON is enabled, verify that a system scheduler triggers WordPress cron.
A missing callback in the current request is an indication only. Unschedule occurrence uses the exact timestamp, hook and original arguments, preserving other argument variants. Removing a recurring occurrence prevents its next execution and future recurrence unless the owner schedules it again.
Media
| Tool | Scope and limits |
|---|---|
| Media library integrity | Reports absent references, missing/unreadable local files, empty files, missing image dimensions and absent derivatives/original-image files. Offloading may explain local absence. No attachment is removed. |
| Old image sizes | Offers removal of derivatives whose size names are no longer registered. Originals, original-image backups, shared size filenames and registered sizes are protected. |
| Possibly unused media | Reports unattached media with no reference found in scanned sources. It never deletes an attachment. |
| Duplicate media files | Compares SHA-256 hashes of local attached files. Matching bytes do not make attachment IDs interchangeable. No merging or deletion. |
| Old temporary files and exports | Recognizes standard WordPress privacy exports, WooCommerce product CSV export filenames and POM image-optimizer working copies. Ordinary media, published PDFs, downloads and unknown files are excluded. |
Removing old derivatives
Delete old derivative removes the selected file and its attachment metadata entry. A changed preview or newly registered size is refused.
Existing content, CSS, emails or external sites can still use an old derivative's URL. This tool does not establish that those references are absent. Confirm compatibility before removal; a database-only backup cannot restore the file.
Possible unused-media coverage
The reference index scans stored post content, post metadata, site options, term metadata and this site's POM settings/content files. This covers many featured images, product galleries, widgets and repeaters. Attachments with a parent or a detected ID/file reference are excluded.
Numeric matching is conservative and may preserve actually unused media. Custom tables, comments, user metadata, remote sites and dynamic theme/plugin code are not exhaustively covered. Values over 1 MB and indexes exceeding 50,000 numeric IDs or file URLs produce explicit partial-coverage notices.
File scan limits
Duplicate detection skips files over 64 MB and stops at 10,000 distinct hashes, reporting partial coverage.
Temporary files must be older than the selected date and at least two days old. A timestamp/size change after analysis prevents removal through that preview.
Traversal rejects symbolic links and other sites' directories. Limits of 5,000 entries per directory, six directory levels and 2,000 queued directories bound filesystem work; a limit produces a partial-coverage notice. Repeat analysis after changing the directory tree.
Content providers and internal references
Shortcode and block providers inspects saved content without rendering shortcodes. Literal examples, disabled plugins and conditional registrations can produce findings. No content is rewritten. Content over 1 MB or over 500 nested blocks is reported as partially inspected.
Internal links and references checks saved href/src attributes, image attachment IDs, supported core block attachment IDs and reusable-block references. Explicit missing IDs and local files are distinguished from unresolved local routes. A route can be a valid archive, translated route or custom endpoint; unresolved does not mean a confirmed HTTP 404.
Only the current host is treated as internal. No HTTP requests or replacements are performed. Each content item is limited to 100 distinct URLs, with a partial-coverage notice when necessary.
POM settings and WooCommerce
POM Framework settings integrity checks activation values, missing enabled POM Tweaks runtimes, write permissions, PHP syntax and missing/out-of-scope managed code-file references, including repeaters. It parses settings without executing PHP. Referenced standalone PHP code is distinguished from literal configuration; unrecognized formats remain unverified. Files over 2 MB are outside literal-array inspection.
An enabled module without an installed runtime can indicate an incomplete or mismatched installation. Check that the owning product is installed completely before acting. No settings are rewritten or deleted.
WooCommerce catalog integrity reviews variation parents, invalid/negative prices, sales above regular prices, stock inconsistencies, missing image attachments, SKU collisions and product lookup discrepancies. Open leads to the product. Review lookup repairs through WooCommerce's own status tools. Prices, stock, lookup rows and orders remain unchanged. Custom product types may need their own validation.
Revision retention
- Choose Content type.
- Set Keep latest revisions per item; the default is five. Zero removes this minimum-retention requirement.
- Set Older than (site timezone).
- Select Analyze, review candidates and apply only selected deletions.
Both conditions must hold: a revision must predate the cutoff and fall outside the newest versions protected for its parent. The count applies separately to each parent across its non-autosave revisions.
Autosaves, current content, revisions created after analysis begins and revisions whose parent cannot be deleted by the current administrator are preserved. The policy is rechecked at deletion; WordPress removes revision metadata and updates caches.
Trash, auto-drafts and other content
Trash and auto-drafts by age offers Trash or Auto-drafts only, a content type and a cutoff. Trash age uses the time it entered the trash, falling back to modification time. Auto-drafts use modification time.
Normal drafts, attachments, revisions, orders, refunds and subscriptions are excluded. Selected eligible records are permanently removed; a changed status or timestamp prevents removal through an old preview.
Old spam, pingbacks and trackbacks applies the cutoff and uses WordPress to remove selected comments and associated metadata.
Unregistered post types and Unregistered taxonomies retain explicit removal of selected obsolete content. Provider absence alone does not establish obsolescence. If registration returns, removal is refused. Removing a missing taxonomy preserves a term still associated with another taxonomy.
Verification and recovery
Analyze again after changes and check the affected editing and frontend workflows. Refusals can indicate changed data, different permissions, a returning owner/provider or an ineligible file.
Completed deletions have no automatic undo. Restore the relevant database and/or file backup when recovery is necessary.
Continue with Prepare and verify a maintenance session.