Title: Attic — Safe Database Cleanup (Undo-Friendly)
Author: Bishal Shrestha
Published: <strong>Август 31, 2026-ж.</strong>
Last modified: Сентябрь 10, 2026-ж.

---

Плагиндерди издөө

![](https://ps.w.org/attic-safe-database-audit/assets/banner-772x250.png?rev=3673275)

![](https://ps.w.org/attic-safe-database-audit/assets/icon-256x256.png?rev=3673275)

# Attic — Safe Database Cleanup (Undo-Friendly)

 Автору [Bishal Shrestha](https://profiles.wordpress.org/rainynewt/)

[Жүктөө](https://downloads.wordpress.org/plugin/attic-safe-database-audit.2.0.0.zip)

 * [Кенен маалымат](https://kir.wordpress.org/plugins/attic-safe-database-audit/#description)
 * [Сын-пикирлер](https://kir.wordpress.org/plugins/attic-safe-database-audit/#reviews)
 *  [Орнотуу](https://kir.wordpress.org/plugins/attic-safe-database-audit/#installation)
 * [Development](https://kir.wordpress.org/plugins/attic-safe-database-audit/#developers)

 [Колдоо](https://wordpress.org/support/plugin/attic-safe-database-audit/)

## Сүрөттөө

Every plugin you’ve ever installed left something behind. Bloated options, dead 
cron jobs, orphaned database tables, leftover transients — years of “uninstalled”
plugins that never actually cleaned up after themselves. This bloat slows down every
page load, because WordPress autoloads a lot of it on every single request. If Site
Health told you that you have too many autoloaded options, this is what to do about
it.

Attic finds it. Safely.

**The problem with every other cleanup plugin:** they delete first and ask questions
later. One false positive and you’ve lost site settings.

**How Attic is different — Quarantine, Never Delete:**
 – Tables you quarantine 
are renamed, not dropped — restorable by default for 30 days (configurable) – Every
option is backed up before removal – Nothing is called orphaned with confidence 
until Attic has confirmed the owning plugin’s _actual files_ are gone from disk 
and searched your code for references — weak evidence stays at “review” rather than
becoming a recommendation

**What Attic finds:**

 * **Autoloaded option bloat** — oversized options that load on every page request,
   ranked by size against Site Health’s 800 KB line.
 * **Ghost cron events** — scheduled hooks with no registered callback, firing forever
   and doing nothing.
 * **Orphaned tables** — tables no installed plugin claims, with reclaimable megabytes
   up front.
 * **Stranded transients** — expired timeout pairs and orphaned rows.
 * **Leftovers from deleted plugins** — data whose owning plugin is absent from 
   disk entirely.
 * **Orphaned meta** — post meta, comment meta, user meta, and term meta whose parent
   row no longer exists.

Two rules outrank every feature:

 1. **Quarantine, never delete.** Options are stored before removal. Tables are renamed(`
    wp_attic_quarantined_*`), never dropped until a purge window passes.
 2. **Nothing is called orphaned until your code has been searched for it.** Attic 
    reads through your plugins, mu-plugins and themes, plus `wp-config.php`, looking
    for every candidate name before promoting anything to high confidence. (PHP, JS,
    JSON and `.inc` files; `node_modules`, `vendor`, `dist` and `build` directories
    are skipped.)

Every finding shows its evidence inline: which rule fired, what it attributed to
and whether that plugin exists on disk, how many code references were found, and
the size. A finding you cannot audit is a finding you should not act on.

**Who this is for:**
 – Site owners who’ve installed/removed a lot of plugins over
the years – Agencies maintaining client sites and doing housekeeping – Anyone whose
Site Health page flags “autoloaded options” and doesn’t know what to do about it

#### How is this different from WP-Optimize or Advanced Database Cleaner?

Those are established cleanup tools with direct delete/optimize actions. Attic takes
a different default: nothing is permanently deleted up front — flagged tables are
renamed (`wp_attic_quarantined_*`) and options are backed up first, with one-click
restore inside the purge window (default 30 days, configurable). Permanent removal
only happens once a quarantined batch passes the purge window un-restored, or if
you purge it yourself on purpose. Attic also checks plugin files on disk and searches
your code for references before promoting findings to high confidence, so uncertain
items stay at “review.”

#### WP-CLI

Run scans from the command line for automation and CI/CD pipelines:

 * `wp attic scan` — run a full database audit
 * `wp attic findings` — list and filter findings
 * `wp attic quarantine` — manage quarantine batches
 * `wp attic status` — check plugin status
 * `wp attic map status` — inspect the bundled attribution map

#### Scheduled Scans

Catch regressions without manual triggers. Schedule scans via WP-Cron or system 
cron, and receive an email digest when complete:

 * Daily, weekly, or monthly scan frequency
 * Email summary with findings count, new vs resolved findings, and total autoloaded
   size
 * Comparison between scans to detect regressions

#### Trend Charts

Visualize your database health over time:

 * Autoload size trend over the last 10 scans
 * 800 KB Site Health limit indicator
 * Trend direction (increasing, decreasing, stable)
 * Export chart as PNG or table as CSV

#### Multisite Support

Network admin dashboard for managing database health across all sites:

 * Aggregated findings across the network
 * Per-site scan status and autoload metrics
 * Network-wide scan capability
 * Proper handling of network-active plugins

#### Attribution Map

A curated map of plugin prefixes to their owning plugin, used to attribute
 orphaned
data. The map ships with the plugin and is updated with plugin releases — Attic 
makes no outbound network requests.

 * `wp attic map status` — show the bundled map version and entry count
 * Add your own attributions with the `attic_prefix_map_entries` filter

#### Third-party libraries

Attic bundles Chart.js 4.4.4 (MIT) at `assets/vendor/chart.umd.min.js`, used
 only
to draw the autoload trend chart in the admin. It is served from your own site. 
Attic makes no outbound network requests of any kind.

### Filters

Protecting things from ever being flagged:

 * `attic_protected_options` — additional never-flag option names
 * `attic_protected_cron_hooks` — additional never-flag cron hooks
 * `attic_protected_tables` — additional never-flag tables
 * `attic_protected_transients` — additional never-flag transient names

Attribution and scanning:

 * `attic_prefix_map_entries` — add or override attribution map entries
 * `attic_prefix_map_path` — load the attribution map from a different file
 * `attic_reference_scan_roots` — where the code search looks; for unusual layouts
   and custom content directories
 * `attic_scan_rules` — add or remove detection rules

Behaviour:

 * `attic_manage_capability` — which capability may scan and quarantine (default`
   manage_options`)
 * `attic_purge_after_days` — override the quarantine purge window
 * `attic_tracked_autoload_options` — which options usage tracking watches
 * `attic_track_autoload_usage` — return false to disable usage tracking entirely

## Орнотуу

 1. Install and activate.
 2. Go to Tools  Attic.
 3. Click Scan.
 4. Review evidence for each finding (confidence, size, code references).
 5. Quarantine what you want gone — recoverable for 30 days by default (configurable)
    if you change your mind.

## FAQ.KG

### Is this safe?

The scan is read-only. Nothing changes until you take an explicit, confirmed action.
Core options like `siteurl`, `active_plugins` and `cron` can never be flagged, and
neither can anything on your own protected list or the `attic_protected_options`
filter.

### How do I undo something?

Tools  Attic  Quarantine. Every action creates a batch; restore a whole batch in
one click. Batches auto-purge after 30 days (configurable).

### Why does my finding say “review” instead of “high”?

For most rules, high confidence requires the owning plugin to be absent from disk(
or the option to be size-flagged _and_ unread), **and** zero literal **and** zero
prefix references anywhere in your code. Dynamic option names never literal-match,
so even a weak signal keeps a finding at “review”. If your filesystem could not 
be read, everything is marked unverified rather than guessed at.

Two rules are exceptions, because a code search cannot tell you anything useful 
about them: an expired transient and a meta row whose parent is gone are facts about
your database, not guesses about your code. Those are reported as high confidence
on their own evidence.

### Does it work with external object caches?

Yes — when Redis/Memcached is active, transients never touch the options table, 
and Attic says so instead of showing a meaningless clean bill of health.

### Multisite?

Yes. Single-site, subdirectory multisite, and subdomain multisite installs all work.
Network-wide fleet scanning is available via the network admin dashboard.

### Which plugins does Attic work with?

Attic works with **all WordPress plugins** — it’s a read-only cleanup tool that 
doesn’t touch plugin data unless you explicitly quarantine it. The attribution map
helps identify which plugin owns which database entries, but the scan works regardless
of whether a plugin is in the map.

Plugins with known prefixes in the attribution map get named attribution, and the“
leftovers from a deleted plugin” rule relies on the map to know which prefixes belonged
to which plugin.

Data belonging to a plugin that is not in the map is still found by the other rules—
an oversized autoloaded option, an orphaned table or a dead cron event is detected
either way. It just shows its owner as “unknown”. You can add your own entries with
the `attic_prefix_map_entries` filter.

### Does Attic delete plugin data?

No. Attic quarantines data (renames tables, copies options), never deletes. You 
can restore anything from Quarantine within the purge window (default 30 days, configurable).

### What about multisite network-active plugins?

Attic correctly detects network-active plugins and never flags their data as orphaned,
even if they’re deactivated on individual sites.

## Сын-пикирлер

There are no reviews for this plugin.

## Contributors & Developers

“Attic — Safe Database Cleanup (Undo-Friendly)” is open source software. The following
people have contributed to this plugin.

Мүчөлөрү

 *   [ Bishal Shrestha ](https://profiles.wordpress.org/rainynewt/)

[Translate “Attic — Safe Database Cleanup (Undo-Friendly)” into your language.](https://translate.wordpress.org/projects/wp-plugins/attic-safe-database-audit)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/attic-safe-database-audit/),
check out the [SVN repository](https://plugins.svn.wordpress.org/attic-safe-database-audit/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/attic-safe-database-audit/)
by [RSS](https://plugins.trac.wordpress.org/log/attic-safe-database-audit/?limit=100&mode=stop_on_copy&format=rss).

## Өзгөртүүлөр

#### 2.0.0

 * New: Orphaned meta detection (post, comment, user, term meta with a missing parent
   row).
 * New: Scheduled scans with an email digest, WP-CLI support, and a network dashboard
   for multisite.
 * New: Autoload trend chart, exportable as PNG or CSV.
 * Fix: Several rules were skipping findings they should have caught (stranded transients,
   three of four meta tables). Re-scanning is recommended.
 * Fix: Orphaned-table detection no longer flags other sites on shared multisite/
   database setups.
 * Improved: No more per-page-load database writes; scans and quarantine are unaffected.
 * Improved: No CDN or outbound requests — everything ships with the plugin.

#### 1.0.1

 * Fix: Quarantine action now correctly updates finding state (broken by SQL syntax
   error).
 * Fix: Orphan tables rule no longer flags Attic’s own tables on sites with nested
   table prefixes (e.g. wp_pc_attic_*).
 * Add: Stop scan button to abort long-running scans mid-flight.
 * Fix: Findings page defaults to latest completed scan instead of showing duplicates
   across all scans.
 * Fix: Scan complete state now hides progress bar and stop button cleanly.
 * Fix: Empty quarantine batches are cleaned up automatically.

#### 1.0.0

 * Initial plugin release: read-only database audit with quarantine-based undo, 
   five detection rules, budgeted scan engine, reference scanning, quarantine with
   batch restore, and attribution map.

## Мета

 *  Нуска **2.0.0**
 *  Акыркы жаңыртуу **14 саат мурун**
 *  Активдүү орнотуулар **Fewer than 10**
 *  WordPress нускасы ** 6.5 же андан жогору **
 *  Tested up to **7.1**
 *  PHP нускасы ** 8.1 же андан жогору **
 *  Тил
 * [English (US)](https://wordpress.org/plugins/attic-safe-database-audit/)
 * Тег:
 * [autoloaded options](https://kir.wordpress.org/plugins/tags/autoloaded-options/)
   [database cleanup](https://kir.wordpress.org/plugins/tags/database-cleanup/)[database optimization](https://kir.wordpress.org/plugins/tags/database-optimization/)
   [site health](https://kir.wordpress.org/plugins/tags/site-health/)
 *  [Advanced View](https://kir.wordpress.org/plugins/attic-safe-database-audit/advanced/)

## Рейтинг

Азырынча эч кандай сын-пикир жок.

[Your review](https://wordpress.org/support/plugin/attic-safe-database-audit/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/attic-safe-database-audit/reviews/)

## Мүчөлөрү

 *   [ Bishal Shrestha ](https://profiles.wordpress.org/rainynewt/)

## Колдоо

Комментарийлер барбы? Жардам керекпи?

 [Колдоо форумун көрүү](https://wordpress.org/support/plugin/attic-safe-database-audit/)