Description
Product Twenty Media Usage builds a local index of image references across
WordPress content, metadata, templates, builder data, and relevant site
settings.
It adds:
- In use, Referenced, Needs review, No references found, Protected,
and Not scanned statuses. - Usage filters and status badges in the Media Library.
- Reference details in the attachment view showing where an image was found,
such as Elementor widgets, Divi modules, Uncode Content Blocks, WPBakery
elements, and ACF fields. - A Media Usage dashboard with index health, pending incremental work, recent
index activity, status totals, estimated reclaimable image space, source
totals, and named skipped-source details. - A top-level Media Usage menu with Dashboard and Usage Index screens.
- Incremental rescans after content, builder data, or image files change.
- Manual protection for images that should not be considered for cleanup.
The scanner recognizes tested database patterns for normal WordPress blocks
and Classic Editor content; media values in Elementor _elementor_data and
_elementor_page_settings; media-shaped attributes in WPBakery [vc_*],
Uncode [uncode_*], and Divi [et_pb_*] shortcodes; and structured media
values stored in Divi _et_* post metadata. It also reads ACF image, gallery,
and file fields when their field definitions are available, including common
ACF Options Page storage. It recognizes attachment IDs, WordPress image
classes, original URLs, resized image URLs, and exact uploads-relative CDN
paths.
Source labels describe where a match was found. They do not claim support for
every builder release, every widget, or every theme option screen. Builder
formats change over time. Media Usage reports skipped or unusually complex
sources and marks zero-match images Needs review when scan coverage is
incomplete instead of claiming they have no references.
The dashboard explains why each source was skipped and shows its measured value
and normal safety limit. A separate protected retry processes one named source
per request with higher but still finite limits. Only after every skipped source
is resolved are affected image statuses repaired in small batches.
The plugin deliberately says “No references found,” not “Unused.” Custom code,
external systems, conditional output, and inaccessible resources can contain
references that a database scanner cannot prove do not exist.
Media Usage does not delete files, alter content, contact an external service,
or collect telemetry.
Installation
- Upload the
product-twenty-media-usagefolder to/wp-content/plugins/or
install the release ZIP. - Activate Product Twenty Media Usage.
- Open Media Usage > Dashboard.
- Select Build usage index.
The first scan processes existing sites in small, resumable batches. WordPress
then keeps the index current as content and supported settings change. Rebuilds
are created as a separate generation; the last successful index remains active
until the replacement is complete.
Activation does not inspect the filesystem or scan content. Scan requests have
short time, memory, traversal, candidate, recursion, and reference-count
ceilings. Oversized or unusually complex sources are skipped with a visible
warning instead of being loaded or processed without a bound. A failed source
keeps its previously saved matches, and transient batch failures receive three
bounded retries. Incremental rescans are paused during imports and replaced by
one deduplicated catch-up reconciliation. Noisy meta such as edit locks is
ignored so large editorial sites are not flooded.
Image uploads, file replacements, and regenerated image metadata refresh only
that image’s indexed status and known file size. The dashboard shows queued
incremental jobs and retains only the newest 100 source-level activity entries;
it does not create a per-reference audit log or write scanner logs to disk.
FAQ
-
Does “No references found” mean an image is definitely unused?
-
No. It means the latest complete scan found no reference in the sources the
plugin can inspect. Theme files, custom PHP, remote content, inaccessible pages,
or conditional JavaScript may still use an image. -
Does the plugin delete images?
-
No. The base plugin is an inspection and classification tool only.
-
Why is an image marked “Referenced”?
-
It was found in a draft, private item, reusable block, saved layout, or builder
template rather than directly in published page content. -
Why is an image with zero references marked “Needs review”?
-
The latest scan could not inspect at least one source completely, so zero
references is not yet a safe cleanup conclusion. Open Media Usage > Dashboard
to see the exact skipped source and safety limit. The protected retry checks one
skipped source per request without rerunning the full site. -
Which builders are covered?
-
The scanner recognizes tested database patterns: media values in Elementor
_elementor_data and_elementor_page_settings; media-shaped attributes in
WPBakery[vc_*], Uncode[uncode_*], and Divi[et_pb_*]shortcodes; and
structured media values stored in Divi_et_*post metadata. Matches are
labeled with the detected provider in the attachment details. This is
pattern-specific recognition, not a promise that every release, widget, or
theme option is covered. Because builders change, a full reconciliation is
scheduled 30 days after each successful scan. Installing the plugin does not
start or schedule the first scan. -
What custom fields are supported?
-
URL-based references in post metadata are inspected generally. ACF image,
gallery, and file fields receive dedicated attachment-ID handling when their
field definitions are available. Developers can declare other ID-based custom
post-meta fields throughproduct_twenty_media_usage_is_media_meta_field, and
ID-based values in relevant site options through
product_twenty_media_usage_is_media_option. Arbitrary numeric custom fields
are not assumed to be image IDs because doing so would create false matches. -
Does scanning send site data anywhere?
-
No. Scanning and storage remain inside the WordPress installation.
-
What happens on uninstall?
-
The relationship index, scan state, statuses, and manual protection flags are
removed. Media files and site content are not modified. -
Does it work with multisite?
-
The plugin can be activated on an individual site. Network-wide activation and
network-level reporting have not been declared or tested. -
Is this the base for a future Pro version?
-
Yes. This plugin is the canonical, independently useful base. Product Twenty
Media Usage Pro is a separate optional companion using the documented extension
API. The base contains no locked controls or licensing requests.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Product Twenty Media Usage” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Product Twenty Media Usage” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- Initial public release.
