Bitflw Media Settings

설명

Bitflw Media Settings helps administrators fix broken entries in the WordPress Media Library.

Features:

  • Detects attachments whose file is missing from disk and adds an “Upload Missing File” box to the attachment edit screen.
  • Adds a “Replace Image” column to the Media Library list so any existing file can be swapped out, with image sizes regenerated automatically.
  • A “Media Settings” page under Media lets you register custom image sizes (name, width, height, hard crop with a 9-point crop anchor) without editing theme code.
  • An AJAX-driven media generator backfills any registered size (built-in or custom) across the existing library, with a live progress bar and an option to skip images that already have the size.
  • A “Media Health” panel on the Media Settings page shows your total media count and lets you check for missing attachments or scan for orphaned image files (files on disk with no Media Library entry) on demand, linking through to a repair list only when something is actually found.
  • A “WebP Support” panel lets you enable WebP thumbnail generation (with a quality slider) for new uploads, and convert your existing media library’s thumbnails to WebP with one click.
  • A “Help” page (linked from Media Settings) walks through what each feature does; new activations are taken there automatically once, as a quick tour.

스크린샷

설치

  1. Upload the bitflw-media-settings folder to /wp-content/plugins/.
  2. Activate the plugin through the “Plugins” menu in WordPress.
  3. Missing attachments and orphaned image files can be managed from the Media Health panel on Media > Media Settings, or directly on an attachment’s edit screen for a single missing file.

FAQ

Does this plugin store any custom data?

It updates the _wp_attached_file post meta and attachment metadata that WordPress core already manages for the attachment being repaired, and keeps your custom image size definitions and WebP settings in two options (bitflw_mr_custom_image_sizes, bitflw_mr_webp_settings). No custom database tables are created, and both options are removed automatically if you delete the plugin.

Who can use the upload/replace features?

Any user with the upload_files capability can upload a replacement file. The “Missing Attachments”, “Media Settings”, and media generator screens all require manage_options.

Does removing a custom size delete the files already generated for it?

Yes. Deleting a custom size also removes every already-generated copy of it across your media library (the file and its metadata entry on each attachment), since a removed size should never be served to visitors again. This does not apply to WordPress’s own built-in sizes (thumbnail, medium, medium_large, large) or sizes registered by your theme/another plugin — only sizes you added through this screen.

Why isn’t “Missing Attachments” in the Media menu anymore?

It’s still there as a page, just not as a visible menu item — the Media Health panel on Media > Media Settings shows a live count and a “Repair Now” link straight to it once a scan actually finds something, rather than a permanent menu entry for a screen most sites never need. The same applies to the new “Orphaned Images” page.

What is an “orphaned image”?

The reverse of a missing attachment: an image file that exists in your uploads folder but has no matching entry in the Media Library (for example, left behind by a theme switch, a failed import, or manual FTP uploads). The Media Health panel’s “Scan for Orphaned Images” button finds these; from the resulting list you can add a file to the Media Library properly or delete it from the server.

Does WebP Support convert my original uploaded files?

No, by design. It only affects generated thumbnail sizes (thumbnail, medium, large, and any custom sizes), the same way WordPress core’s own built-in WebP support works — your original uploaded JPEG/PNG file is never touched, so nothing that links directly to it ever breaks. Converting existing images regenerates their thumbnails with WebP versions; the old JPEG/PNG thumbnail files this leaves behind are no longer referenced and will show up as orphaned files, which you can clean up from the Media Health panel’s orphan scanner.

Does WebP Support work on any hosting?

It needs your server’s PHP image library (GD or Imagick) to support WebP encoding. If it doesn’t, the WebP Support panel shows a warning and the setting simply has no effect until your host enables it — nothing breaks either way.

후기

이 플러그인에 대한 평가가 없습니다.

기여자 & 개발자

“Bitflw Media Settings”(은)는 오픈 소스 소프트웨어입니다. 다음의 사람들이 이 플러그인에 기여하였습니다.

기여자

자국어로 “Bitflw Media Settings”(을)를 번역하세요.

개발에 관심이 있으십니까?

코드 탐색하기는, SVN 저장소를 확인하시거나, 개발 기록RSS로 구독하세요.

변경이력

2.9.5

  • Prefixed both AJAX action names (wp_ajax_upload_missing_attachment wp_ajax_bitflw_mr_upload_missing_attachment, wp_ajax_replace_existing_image wp_ajax_bitflw_mr_replace_existing_image) to rule out collisions with other plugins.
  • Fixed: replacing a file for an attachment with no _wp_attached_file meta (e.g. one already missing) could resolve the destination folder to the current working directory instead of the uploads folder. The destination is now always confirmed to be inside the uploads directory, falling back to its base folder otherwise.
  • Updated Contributors to the WordPress.org account this plugin is submitted under.

2.9.4

  • Resolved every finding reported by the WordPress.org Plugin Check tool: switched unlink()/rename() calls to wp_delete_file() where a like-for-like swap was possible, sanitized a couple of AJAX inputs at the point they’re read instead of only downstream, fixed a possibly-undefined $_FILES index check, and added justification comments (phpcs:ignore) on the handful of direct database queries and one rename() call that have no WordPress-API equivalent for what they do (a LIKE search inside serialized attachment metadata, and a local file move within the uploads folder).

2.9.3

  • Renamed the PHP namespace from Bitflw\MediaRepair to Bitflw\MediaSettings to match the plugin’s new name (internal change only, no effect on stored options or behavior).

2.9.2

  • Plugin folder, main file, asset files (CSS/JS), and text domain renamed from “bitflw-media-repair” to “bitflw-media-settings” to match the display name. Deactivate and reactivate the plugin after updating, since the main file name changed.

2.9.1

  • Renamed the plugin from “Bitflw Media Repair” to “Bitflw Media Settings” (display name only – the plugin folder/file and text domain are unchanged, so no reactivation is needed).
  • Added Author URI (https://bitflw.com/).
  • uninstall.php now actually removes the plugin’s options (bitflw_mr_custom_image_sizes, bitflw_mr_webp_settings, bitflw_mr_activation_redirect) instead of just documenting that there was nothing to clean up, which was no longer true once those options existed.

2.9.0

  • Added a “Help” page: a plain-language tour of every feature (fixing missing attachments, replacing images, custom sizes, Media Health, WebP Support), each pointing straight to where it lives. Not shown in the admin menu – reached via a “Help” link on the Media Settings page.
  • New activations are now taken to the Help page automatically, once, the standard first-run introduction pattern. Skipped on bulk plugin activation.

2.8.4

  • The Media Library grid view’s “Replace Image” button now uses the exact same icon as the list view’s Replace Image column (previously a generic dashicon), including the same hover effect. Both are now sourced from one shared method so they can’t drift apart.

2.8.3

  • Renamed the “Image Sizes” menu item and page to “Media Settings”, reflecting that it now covers Generate Media, Media Health, and WebP Support too, not just image sizes.

2.8.2

  • Fixed: the Quality slider’s track was flat gray with no colored “filled” portion, so it looked disconnected from the accent color used everywhere else. It now shows a filled progress track (following the site’s admin color scheme, same as the rest of the plugin) up to the current value, in both WebKit/Blink and Firefox.

2.8.1

  • WebP Support: the Quality field is now a slider with a live value readout instead of a number input.

2.8.0

  • Added the “Replace Image” button to the Media Library’s Grid view too (top-right corner of each thumbnail, shown on hover) – previously it only appeared in List view. Uses the same upload endpoint and now shows a toast on success/failure instead of nothing.

2.7.1

  • WebP Support: removed the separate JPEG/PNG checkboxes – enabling WebP now always converts both, since there’s no real reason to only allow one format.
  • Fixed: “Convert Existing Images” showed its progress inside the Generate Media card instead of the WebP Support card it was clicked from. It now has its own progress bar and error log local to that panel.

2.7.0

  • Added a “WebP Support” panel to the Image Sizes page: enable/disable WebP thumbnail generation, a quality setting, per-format (JPEG/PNG) toggles, and a “Convert Existing Images” action that regenerates thumbnails across the whole library as WebP. Built on WordPress core’s own image_editor_output_format/wp_editor_set_quality filters (introduced in WP 5.8 for this exact purpose) rather than a custom conversion pipeline – only generated thumbnails are affected, never the original uploaded file. Shows a warning if the server’s image library doesn’t support WebP encoding.

2.6.1

  • Fixed: “Add to Library” used .button-primary, which inherits the site’s admin theme accent color – on a red/orange scheme it looked just as alarming as the red “Delete” button next to it. It now uses a fixed, non-themeable green so it always reads as the safe action.
  • Orphaned Images: long file paths now truncate with an ellipsis (full path on hover) instead of wrapping awkwardly across two lines; added a divider under the bulk-actions toolbar and a border around thumbnails.

2.6.0

  • Orphaned Images page: added checkboxes, a “select all” control, and bulk “Add Selected to Library” / “Delete Selected” actions instead of one-at-a-time only.
  • Replaced every native browser alert() and confirm() across the plugin’s upload/replace/orphan flows with an in-page toast notification and the shared confirm modal.
  • Restyled the Missing Attachments page to match the rest of the plugin (page header with a live count pill, card/table layout, progress bar for uploads) instead of a bare, unstyled table.
  • Fixed “Add to Library” reading as a destructive/red action on sites using a red admin color scheme – it’s now a clearly primary (filled) button, distinct from the outlined red “Delete” actions.

2.5.0

  • Removed “Missing Attachments” from the Media admin menu (the page itself still exists, just reached via a link instead of a permanent menu entry).
  • Added a “Media Health” panel to the Image Sizes page: total media count, an on-demand “Check for Missing Attachments” scan, and a new “Scan for Orphaned Images” feature that finds image files on disk with no Media Library entry.
  • Added a new “Orphaned Images” page (also not in the menu, reached via the panel) listing every orphaned file found, each with “Add to Library” and “Delete File” actions.

2.4.1

  • Replaced the browser’s native confirm() prompt for deleting an image size with an in-page modal matching the rest of the screen’s design.

2.4.0

  • Deleting a custom image size now also removes every already-generated copy of it from disk (file + metadata) across the whole media library, so a removed size can’t keep being served. Runs as a live-progress background pass right after the size is removed, the same way the media generator does.

2.3.3

  • The crop-anchor picker (trigger button and popover) now only shows up once “Hard crop” is checked, since the position has no effect otherwise.

2.3.2

  • The “N sizes registered” pill now updates immediately after adding or deleting a size via AJAX, instead of only on page reload.
  • Restyled the Delete action as a small square × icon button, matching the crop-anchor trigger’s visual style.

2.3.1

  • Fixed: the Stop button (and other hidden elements sharing WordPress core’s .button class) failed to hide because core’s .button { display: inline-block } rule silently overrode the browser’s default [hidden] behavior.
  • The Image Sizes page content now centers on wide screens instead of hugging the left edge.

2.3.0

  • Redesigned the Image Sizes screen: two-column layout (sizes table + Generate Media sidebar), an inline toolbar for adding a size instead of a table row, a compact popover for the crop-anchor picker, a live “N sizes registered” count, and inline live stats/percent while generating.

2.2.1

  • Fixed: regenerating a single size with “Skip images that already have this size” checked (the previous default) would silently keep an image’s old crop instead of applying a newly chosen crop position, since it only checked whether the size existed, not whether it matched the current settings. The checkbox now defaults to off.

2.2.0

  • Added a 9-point crop anchor picker: when “Hard crop” is checked while registering a new size, choose which part of the image (corners, edges, or center) stays after cropping, matching add_image_size()’s own (x, y) crop-position support.

2.1.1

  • Reworked the Image Sizes screen layout: the “add size” form now lives inline as the table’s first row instead of a separate sidebar card, avoiding a height-mismatch layout bug and keeping everything in one panel.
  • Image Sizes screen now follows WordPress’s per-user Admin Color Scheme for its accent color instead of a fixed blue.

2.1.0

  • Added an “Image Sizes” admin page to register custom image sizes (name, width, height, hard crop) directly from the dashboard.
  • Added an AJAX-driven media generator that backfills any registered size (built-in or custom) across the existing library, with a live progress bar, per-item error log, and a “skip existing” option.

2.0.0

  • Rebuilt with an object-oriented architecture (namespaced classes under Bitflw\MediaRepair, PSR-4-style autoloading).
  • Added upload_files capability checks to both AJAX handlers.
  • Fixed a broken inline <style> block used to highlight the missing-file meta box.
  • Renamed the plugin, its files, and its assets under the Bitflw namespace.

1.0.4

  • Previous release (Attachment Re-Upload).