Skip to content

Releases: duppinstech/wp-builder-meta-cleanup

v2.3.5

Choose a tag to compare

@github-actions github-actions released this 19 Oct 02:48

Requirements

  • Requires at least: 6.0
  • Requires PHP: 7.4
  • Tested up to: 6.7

Changes in 2.3.5

Added

  • Plugins screen: Settings opens Tools → Builder Meta Cleanup. Sponsor and Support are on the plugin row. View details shows the banner, icon, and Description, Installation, FAQ, and Changelog from readme.txt. The Changelog tab uses the GitHub release notes when the updater has them.
  • Banner and icon in assets/wporg/.

Changed

  • Updates come from GitHub Releases only, through the shared updater standard v1.1.0. Dashboard → Updates → Check again refreshes that check.
  • The release workflow publishes wp-builder-meta-cleanup.zip and writes the release notes from this changelog.
  • Cleanup behavior is unchanged.

Removed

  • About & tools update-source setting (GitHub, WordPress.org, or both).

v2.3.4 — Maintenance release

Choose a tag to compare

@github-actions github-actions released this 19 Oct 00:29

Maintenance release. Cleanup behavior is unchanged.

Repository tooling (CI, agent notes, and the release zip exclude list) shipped with this tag. Detect, delete, and inactive-stack rules are the same as v2.3.3.

v2.3.3 — Impreza (UpSolution) + OceanWP theme targets

Choose a tag to compare

@oduppinsjr oduppinsjr released this 27 May 13:59

New theme targets: Impreza (UpSolution) and OceanWP

Adds two more theme targets so their orphaned wp_options rows and postmeta can be swept once each theme is inactive.

Added

Impreza (UpSolution)

  • Detection: the Impreza / impreza template or stylesheet, with case-insensitive matching via strtolower(). Theme presence checks both wp_get_theme( 'Impreza' )->exists() and the lowercase variant for case-sensitive filesystems.
  • Postmeta prefixes: us_%, _us_%.
  • Exact options: usof_options_Impreza (the UpSolution Options Framework blob — frequently 25 KB+ autoloaded), plus both casings of theme_mods_Impreza and theme_mods_impreza.
  • wp_options LIKE patterns: usof_% (UpSolution Options Framework) and us_% (shared UpSolution data / caches).

OceanWP

  • Detection: the oceanwp template or stylesheet.
  • Postmeta prefixes: ocean_%, _ocean_%.
  • Exact options: theme_mods_oceanwp (the Customizer blob).
  • wp_options LIKE patterns: ocean_% (OceanWP core options), oceanwp_% (OceanWP + Ocean Extra), and oewt_% (Ocean Extra widgets).

Safety

Both targets follow the same active-theme guard as Astra / Divi / Beaver / BeTheme — postmeta cleanup is blocked while the target theme is active, and option deletion (exact and LIKE) is only offered when is_target_active() returns false. The Summary tab will automatically pull these into the per-stack breakdown when they have detectable rows, and the bulk cleanup button respects the per-stack opt-out checkboxes added in v2.3.1.

Upgrade

Patch release. No data migration, no configuration changes. Users without these themes installed will simply see two more Not installed / Inactive rows on the Themes & frameworks tab.

Builder Meta Cleanup v2.3.2

Choose a tag to compare

@oduppinsjr oduppinsjr released this 27 May 13:43

New preset target: Unlimited Elements for Elementor

Adds the Unlimited Elements for Elementor plugin (free + premium) as a preset target so the cleanup workflow can sweep its leftover rows after the plugin has been deactivated.

Added

  • Plugin paths matched: unlimited-elements-for-elementor/unlimited_elements.php and unlimited-elements-for-elementor-premium/unlimited_elements.php.
  • Exact wp_options row: addon_library_catalog — the autoloaded addon catalog cache. Frequently grows to 100KB+ on long-running sites because it is autoloaded on every WordPress request.
  • wp_options LIKE patterns:
    • addon_library_% — catches addon_library_catalog, addon_library_lasttime, addon_library_version, and any sibling caches the plugin writes.
    • unlimited_elements_% — catches the plugin's settings rows.

Safety

The new target sits in includes/data-plugin-cruft-targets.php with ui_tab = 'plugin'. It follows the same active-stack guard as every other preset: detection runs through is_target_active() against the listed plugin_paths, so options and pattern deletes are only offered when the plugin is not active. The Summary tab and the bulk "Run full cleanup" button will also automatically skip this target while the plugin remains active.

Upgrade

Patch release. No data migration, no configuration changes. Users without Unlimited Elements installed will simply see one more Not installed / Inactive row on the Plugins tab.

Builder Meta Cleanup v2.3.1

Choose a tag to compare

@oduppinsjr oduppinsjr released this 27 May 13:41

Summary tab is now the default + per-stack opt-out checkboxes

Two UX refinements requested by users of the v2.3.0 Summary tab.

Changed

  • Summary is now the default tab and the first entry in the navigation. Opening Tools → Builder Meta Cleanup now lands on the site-wide overview instead of Themes & frameworks. The remaining tab order is: Summary → Themes & frameworks → Page builders → Plugins → About & tools.
  • Per-stack breakdown table now includes an Include checkbox column on the left, with one checkbox per detected inactive stack. Every checkbox is pre-checked on page load so the default behavior matches the previous "delete all" flow — uncheck any rows you want to exclude before clicking the cleanup button. A master Include / Select all checkbox in the column header toggles every row at once and reflects an indeterminate state when only some rows are checked.
  • The bulk submit button rewrites its own label live as you toggle checkboxes — for example "Delete 12,345 rows for 3 selected stack(s)" — and disables itself when zero stacks are selected. The backup-confirmation gate from v2.3.0 is preserved on top of this.

Added

  • Builder_Meta_Cleanup_Service::delete_all_for_inactive( ?array $only_target_ids = null ) accepts an optional allowlist of target ids. Passing null (the default) keeps the existing "delete every inactive target" behavior, so the WP-CLI clean-orphans command and any external callers are unchanged.
  • Return shape gains targets_skipped_unselected so the admin success message can distinguish "skipped because the stack is still active" from "skipped because you unchecked it".

Safety

  • The admin POST handler validates posted target ids against the live registry and re-runs is_target_active() per target before deleting anything. The per-stack checkboxes can only narrow the bulk action — they can never widen it, bypass the active-stack guard, or delete data for an unknown target id.
  • The backup-confirmation checkbox gate from v2.3.0 still applies on top of the new per-stack opt-out.

Upgrade

Patch release. No data migration, no configuration changes. The Summary tab will now load first when you click Tools → Builder Meta Cleanup — direct links to the other tabs (tools.php?page=builder-meta-cleanup&bmc_tab=theme|page_builder|plugin|about) still work unchanged.

Builder Meta Cleanup v2.3.0

Choose a tag to compare

@oduppinsjr oduppinsjr released this 27 May 13:03

Summary tab, master Select-all, and one-click full cleanup

Two new conveniences for cleaning up a site after migrating away from a theme/builder/plugin: a per-table master Select all checkbox so you can sweep everything on a tab in one click, and a brand-new Summary tab that lists every cleanable row across the entire site and lets you delete it all with a single submit (after confirming you have a backup).

Added

  • Summary tab — fifth admin tab next to Themes & frameworks, Page builders, Plugins, About & tools. Shows:
    • A prominent red disclaimer reminding you to back up the database and explaining what cleanup does / does not touch.
    • Totals across inactive stacks: postmeta rows, exact-option rows (with combined byte size), pattern-matched option rows, grand total, and the count of active stacks that were skipped.
    • Per-stack breakdown table grouped by stack with rows for postmeta / exact options / pattern options, the originating tab, and per-stack totals.
    • Run full cleanup form: a backup-confirmation checkbox plus a single red "Delete N rows shown above" button. The button is disabled until the checkbox is ticked, and an additional confirm() dialog fires on submit. Server-side, the POST handler re-checks the backup-confirmation field AND re-runs is_target_active() per target before deleting anything.
  • Master Select all in the header of each cleanup table (Postmeta, Exact options, Pattern options) on the Themes & frameworks, Page builders, and Plugins tabs. Vanilla-JS handler:
    • Binds via the HTML5 form="..." attribute, so it works with the existing detached form pattern.
    • Honors disabled rows (a "Stack active" or "Not present" row will never be force-selected).
    • Reflects indeterminate state when only some children are checked.
  • WP-CLI parity:
    • wp builder-meta summary — read-only overview of every cleanable row across inactive stacks.
    • wp builder-meta clean-orphans [--dry-run] [--yes] — the CLI equivalent of the Summary tab's "Delete all" button.
  • Service helpers Builder_Meta_Cleanup_Service::summary_for_inactive() and delete_all_for_inactive() power both the admin Summary tab and the new CLI commands.

Safety

  • The Summary "Run full cleanup" submit is double-gated: it stays disabled until you tick the "I have a current backup of this database and understand that this cannot be undone." checkbox AND confirm a native browser confirm() dialog. The POST handler then re-checks that field.
  • The bulk delete still iterates target-by-target and calls is_target_active() before doing anything. A stack that is still installed-and-active is never cleaned through the bulk path — even if it somehow appeared in a stale Summary view.
  • Master Select-all skips disabled child checkboxes, so a row marked "Stack active" or "Not present" cannot be force-checked from the UI.

Upgrade

Minor release. No data migration, no config changes. Existing Themes / Page builders / Plugins tabs behave identically except for the new "Select all" header checkboxes.

Builder Meta Cleanup v2.2.1

Choose a tag to compare

@oduppinsjr oduppinsjr released this 27 May 12:37

Astra cleanup: cover astra_docs_data and the full astra_% / astra-% option families

The Astra target's option allowlist only covered the dash variants (astra-settings, theme_mods_astra) and the postmeta prefixes ast- / _astra_, so the underscore-prefixed astra_docs_data (Astra's cached help/docs payload, often 100KB+ and autoloaded) was missed. v2.2.1 extends the Astra target so it can clean the full astra_… / astra-… family.

Added

  • Astra: exact option astra_docs_data added to the allowlist.
  • Astra: options_like patterns astra_% and astra-% covering Astra Sites / Starter Templates (astra_sites_*), Astra Pro / Astra Addons (astra_pro_*, astra-addon-auto-version, etc.), and addon flag rows.

Safety

Deletion of the new exact option and both options_like patterns is still gated through options_like_choice_allowed() → is_target_active('astra'). The rows will only be offered for deletion when the Astra theme is not the active template/stylesheet.

Admin

Themes & frameworks tab → Astra now shows the new exact-option checkbox plus two pattern-based rows (astra_%, astra-%).

WP-CLI

wp builder-meta options-delete --option=astra_docs_data --yes
wp builder-meta options-like-delete --target=astra --pattern=astra_underscore --yes
wp builder-meta options-like-delete --target=astra --pattern=astra_dash --yes

Upgrade

Patch release. No configuration changes required. Sites still on Astra will see the new options listed but cannot delete them until the theme is switched, matching the rest of the plugin's behavior.

Builder Meta Cleanup v2.2.0

Choose a tag to compare

@oduppinsjr oduppinsjr released this 04 May 07:55

Full Changelog: v2.1.0...v2.2.0

v2.1.0

Choose a tag to compare

@oduppinsjr oduppinsjr released this 04 May 02:30

Full Changelog: v2.0.0...v2.1.0

v2.0.0

Choose a tag to compare

@oduppinsjr oduppinsjr released this 24 Apr 13:54

Initial release: multi-builder detection, safe postmeta/options cleanup, WP-CLI (wp builder-meta).