| 开发者 |
filikod
lyode |
|---|---|
| 更新时间 | 2026年10月9日 23:48 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
Install Filikod and open Filikod > ALT Audit. It checks every image in your media library and flags the ones whose alt text is missing or empty, generic, too short, too long or duplicated, each in its own tab. Fix them one by one inline, or in bulk by issue type. The Filikod > Dashboard sums it up in a single ALT Quality Score. To check a single public page without installing anything, use the free online checker at filikod.com/alt-text-checker.
A checker first. Filikod audits the alt text that already exists in your media library and scores it. It never sends your images to an external AI service and never invents descriptions behind your back. An optional, local filename-based setting (off by default) can fill a starting ALT for images that have none, and you then review it in the ALT Audit like any other ALT text.
Yes, but it is optional and filename-based. Filikod generates ALT from the image filename only for images that have no ALT text yet. Its core strength is structured ALT audit and bulk management, so you always stay in control of your content.
Not currently. ALT generation is based on the image filename. The core philosophy of Filikod is editorial control: you decide what each image means in context. Filikod gives you the visibility and tools to write accurate ALT yourself, or to review and validate what automation produces.
Image Attributes Pro and similar filename-based plugins set ALT text automatically from the filename. They do not audit your existing library, detect generic or duplicated ALT, or give you a quality score. Filikod gives you a structured audit across your entire media library and the tools to fix issues in bulk, including images uploaded before you installed the plugin.
Yes. Filikod scans and processes your entire existing media library, including images uploaded before installation. You can run a bulk process from the Settings page at any time.
Not by default. All ALT features (audit, score, bulk editing, badges) only change the _wp_attachment_image_alt meta in WordPress and never touch your binary image files.
The only exception is the optional Automatic Image Resizing feature (Settings > Optimizations, disabled by default). When you enable it, images wider than your maximum width are resized and the original file is replaced by the resized version. This is not reversible, so make sure you have a backup before running it on your existing library.
It is a score from 0 to 100% that reflects the overall ALT text health of your media library. It takes into account the proportion of images with missing, generic, too-short, and duplicated ALT attributes. It gives you a single measurable number you can track and improve over time, like an SEO or accessibility health metric.
Yes. The ALT Audit page lets you filter images by issue type (missing, generic, short, duplicated) and edit ALT text inline. Changes save instantly without reloading the page.
Yes. Filikod manages ALT attributes directly in the WordPress media library, independently from your theme or page builder. Compatibility is universal.
Yes. Filikod > Duplicates lists every group of identical files (same md5 fingerprint) with thumbnail, size, upload date, usage context and ALT text, and flags the oldest copy. Run "Scan library" once to fingerprint your existing images; new uploads are fingerprinted automatically. Filikod only detects: it never deletes or merges files, you clean up from the Media Library when you are sure. Resized or re-encoded variants of a picture are different files and are not reported as duplicates. An optional Duplicate Upload Alert (Settings > Optimizations) warns you right after uploading a copy of an existing image.
Yes. Filikod supports WordPress multisite.
No. Filikod does not compress images, convert to WebP, or serve images via CDN. It focuses entirely on ALT text quality: the audit, the score, and the tools to fix issues at scale. You can use a dedicated image optimizer alongside Filikod without any conflict.
Full documentation is available at filikod.com.
_filikod_file_hash post meta) and lists every group of exact copies uploaded more than once. Same layout as the ALT Audit: each copy shows its thumbnail, file name (with ID, dimensions, size and upload date), Context (where it is used), its ALT text, a Reference / Duplicate status (the reference being the oldest copy) and Edit / Library links. Groups are separated by a header line with the space that keeping a single copy would free. The scan controls sit at the top of the page. Fingerprints are computed automatically on upload and whenever the attachment metadata is regenerated (WordPress big-image scaling, Filikod resizer, image editor, Enable Media Replace, thumbnail regeneration), always from the original file when WordPress kept one, and back-filled for the existing library by a batched Scan library job (25 images per request, same engine as the other bulk jobs). Full rescan recomputes everything, for files replaced outside WordPress. Detection only: nothing is deleted or merged. Groups are cached for 15 minutes (filikod_duplicate_groups_v1) and invalidated on upload, deletion and fingerprint change. Perceptual near-duplicates (resized or re-encoded variants) are out of scope for this version.wp_prepare_attachment_for_js (filikod_duplicate_of), resolved from the cached groups (no extra query per thumbnail).wp.Uploader queue, so it works in the Media Library and in every editor media frame. Uploads are never blocked. New option filikod_duplicate_upload_alert (default yes), removed on uninstall.post_translations), WPML with Media Translation (post_attachment element type), Bogo (_original_post meta). Groups are recomputed when translation links change. Unlinked copies are listed with their language (FR, EN...) on the Duplicates page and in the attachment details. Weglot, GTranslate, TranslatePress, WPGlobus and MultilingualPress need nothing: they never create a second attachment for the same file on the same site.suppress_filters), matching the SQL counters used everywhere else in the plugin.icl_translations, post_translations, _original_post), so large libraries are not slowed down. Duplicate index bumped to filikod_alt_norm_counts_v3.image/* attachment by MIME type, so SVG logos (the most duplicated files on many sites) are detected. Attachments whose file is missing on disk are marked (x:missing) instead of being counted as "still waiting" forever; the scan block reports them and a Missing files tab lists them (expected path, context, ALT, links) so you can restore the file or delete the attachment; "Scan library" skips them and "Full rescan" retries them.filikod_alt_audit_v6, duplicate index to filikod_alt_norm_counts_v2.wp-admin/includes/media.php, ajax-actions.php, plugin.php, post.php, formatting.php, HTML API, REST comments, XML-RPC). The attachment finalize fix (#66056) and the media/AJAX changes do not alter the hooks Filikod relies on (attachment_fields_to_edit, attachment_fields_to_save, wp_prepare_attachment_for_js, add_attachment, wp_update_attachment_metadata, wp_check_filetype_and_ext). No incompatibility found._filikod_file_hash fingerprints (plugin cache, no editorial value) are removed on uninstall, on every site of a multisite network.Filikod_Duplicates (compute_hash(), hash_attachment(), get_hash(), identity_for_attachment(), get_groups_data(), get_summary()), new helper Filikod_Alt_Audit::counts_from_identity_map(), new helper Filikod_Media_Utils::count_images_with_title(). build_duplicate_map() and build_duplicate_map_with_alt_override() keep their signature and return type.add_attachment and delete_attachment, and as a safety net the audit table also skips any attachment that no longer exists when rendering the current page. Thanks to Patrick for the report.IMG_, DSC_, …) and slipped through as Alt: OK. Detection applies everywhere: ALT Audit tabs, Dashboard counters, and Media Library badges (list, grid, attachment details). The audit cache is bumped to filikod_alt_audit_v5 so the new rule applies on first load after update..ico uploads. WordPress performs a second MIME check against the real file content, and PHP detects .ico files as image/vnd.microsoft.icon (not the declared image/x-icon), so uploads were rejected "for security reasons" even with the option enabled. A dedicated wp_check_filetype_and_ext handler now accepts the real-world ICO MIME variants, including PNG-based favicons renamed to .ico.viewBox, gradients and clip paths: element and attribute names were lowercased before being compared to a case-sensitive whitelist containing camelCase entries. As a result, viewBox, preserveAspectRatio, <linearGradient>, <radialGradient> and <clipPath> were removed from every sanitized SVG, breaking responsive scaling and visual rendering. Both sides of the comparison are now normalized, and gradient presentation attributes (offset, stop-color, stop-opacity, gradientUnits, gradientTransform, spreadMethod) are now whitelisted so preserved gradients actually render. The security posture (script/event-handler/external-reference removal) is unchanged.wp_handle_upload). Files brought in through sideloading (media_sideload_image(), the WordPress importer, third-party plugins) bypassed sanitization entirely. The wp_handle_sideload_prefilter and wp_handle_sideload hooks now run the exact same validation and sanitization chain.filikod-resized image size is now registered: it was hooked on after_setup_theme, which fires before the plugin's classes are instantiated on init, so the registration never ran. The size announced for page builders (Elementor, Gutenberg) now actually exists.Filikod_Media_Utils class. No behavior change..svgz) could bypass the SVG sanitization chain, which only processes uncompressed .svg uploads. The SVGZ option has been removed from Settings > File types; sites that had it enabled will no longer accept .svgz uploads. Regular .svg uploads are unaffected and remain fully sanitized. If you previously uploaded .svgz files, we recommend reviewing them and re-uploading as standard .svg.
• Documentation – image files FAQ: the "Does Filikod modify my image files?" answer now explicitly states that the optional Automatic Image Resizing feature (disabled by default) replaces the original file with the resized version and is not reversible. All ALT features remain meta-only and never touch image files.
1.1.1
• AI-generated image detection (Generic ALT): ALT text inherited from default AI export filenames is now flagged as Generic in the audit. Two new universal patterns cover the most common cases:
Gemini_Generated_Image_* → e.g. "Gemini Generated Image i90nz7i90nz7"ChatGPT Image * → e.g. "ChatGPT Image Jul 7, 2024 at 02_30_00 PM"
These ALT values look meaningful but carry zero accessibility or SEO value, so Filikod now surfaces them in the Generic tab of the ALT Audit and in the Alt: Generic badge across the Media Library (list, grid, attachment details). Detection is applied to the normalized ALT, so casing, underscores, dashes and dates do not bypass the rule.
• Audit cache: transient bumped to filikod_alt_audit_v4 so the new detection rule applies immediately on first load after update; previous v3 (and earlier) transients are explicitly cleared by invalidate_cache().
• Performance – Dashboard media stats: the Dashboard counters (total images, total size, optimized count, original/optimized size) are now computed in a single batched loop and cached for 15 minutes (filikod_media_size_stats_v1). The cache is auto-invalidated on attachment add/delete and after each automatic resize, removing repeated heavy queries on every Dashboard page load.
• Security – ALT save endpoint: the AJAX endpoint filikod_save_alt now checks current_user_can( 'edit_post', $attachment_id ) per attachment, verifies that the target is an actual image (wp_attachment_is_image()), and truncates ALT text longer than 1000 characters before saving.
• Accessibility – SVG sanitizer: the strict SVG whitelist now allows <title>, <desc> and accessibility attributes (role, aria-label, aria-labelledby, aria-describedby, aria-hidden, tabindex, preserveAspectRatio). These elements are non-executable and required for WCAG-compliant inline SVG; the security posture against scripts, event handlers and external references is unchanged.
• Settings UX: the Maximum image width setting now displays an explicit admin error notice when a value outside the supported range (100–10000 px) is submitted, instead of silently rejecting the input.
• Multisite hygiene: the uninstall routine now also deletes per-site Filikod transients (_transient_filikod_* and their timeouts) on every sub-site of a multisite network, preventing orphaned cache entries after plugin removal.
• Production log hygiene: non-critical error_log() calls in the SVG sanitization and image resizer paths are now gated behind WP_DEBUG, avoiding noise in production debug.log files.
• Code cleanup: removed two dead-code paths (no-op rewrite-rule flush on init; SVG security headers hook that never fired because static SVG files bypass template_redirect). No user-visible behavior change.title tooltip explaining the status and the recommended action (e.g. “ALT text exceeds 125 characters. Long ALTs are poorly read by screen readers and dilute SEO signals…”). Tooltips are translatable and parameterized with the actual character thresholds. A dotted underline (cursor: help) signals the tooltip on the Issue label
• New issue: Too long ALT: detection of ALT text exceeding 125 characters (after normalization). Dedicated tab on the ALT Audit page, dedicated count on the Dashboard, dedicated Alt: Too long badge in the Media Library (list, grid, modal). Score impact: 70/100 (reported but less critical than duplicate, generic, too short, or missing)
• Decorative action: mark an image as decorative (intentional alt="" per WCAG). Decorative images are fully excluded from the ALT score (neither numerator nor denominator) so logos, dividers and purely visual icons stop dragging your score down. Dedicated Decorative column on the ALT Audit page with a toggle switch that auto-saves on change; dedicated Decorative tab to review and revert; dedicated Alt: Decorative badge in the Media Library
• ALT Audit UI: decorative action moved out of the Action column into its own column with a toggle switch (auto-save on change, keyboard-accessible). The Action column now only holds the Save button for a cleaner row layout
• Badge colors refresh: new palette for the Media Library ALT Status badges. Alt: Generic in amber (#FFC736) and Alt: Too short in teal (#0DBB9C) for clearer visual differentiation
• Dashboard: two new counters, Too long and Decorative, both linking to the matching ALT Audit tab
• Audit cache: transient bumped to filikod_alt_audit_v3 (auto-rebuilt on first load); invalidation hooks now also listen to the new _filikod_decorative post meta
• i18n: new translatable strings (Too long, Decorative, Marked as decorative., Image restored as a regular image, please add an ALT text., "too long" description with parameterized character threshold)
• Public API: new helpers Filikod_Alt_Audit::is_decorative(), Filikod_Alt_Audit::set_decorative(), new constants TOO_LONG_MIN_LEN, META_DECORATIVE, AUDIT_TRANSIENT
• Backwards compatibility: existing audit results still load; collect_alt_issue_codes() gains an optional fourth parameter $is_decorative defaulting to false
1.0.9
• ALT Status labels: badges in the native Media Library (list, grid, attachment details) now use an Alt: prefix on every status (e.g. Alt: OK, Alt: Duplicated, Alt: Missing) via a translatable Alt: %s string
• OK badge: removed the checkmark character; the passing state reads Alt: OK
• Attachment details modal: new stylesheet media-modal-alt-status.css enqueued after media-views (wp_enqueue_media) so the ALT Status label stays aligned with other field labels and with the badges, including under the 900px responsive rules
• Readme: description, screenshots captions, and changelog aligned with the above
1.0.8
• Native Media Library: ALT Status column in list view; badge overlay on grid thumbnails (top-left); ALT Status field in attachment details modal/sidebar
• Modal UX: ALT Status label aligned with badges; multiple issue badges on one horizontal row in attachment details (list column still stacks badges for readability)
• Live updates: status refreshes after saving ALT text (AJAX save handlers) and while typing (server-side preview); dashboard and audit cache stay in sync when _wp_attachment_image_alt changes
• Multi-issue badges: an image can show several tags at once (e.g. Generic + Too short + Duplicated) when multiple rules apply; single green Alt: OK when there are no issues
• Reliability: audit transient cache key bumped (filikod_alt_audit_v2); normalized cache keys for object caches; attachment_fields_to_save ensures image_alt is persisted on save-attachment-compat like the classic uploader; invalidation hooks on post meta, attachment save, and related paths
• Performance: cached global map of normalized ALT → occurrence count (filikod_alt_norm_counts_v1); duplicate preview in the media modal avoids scanning every attachment per request; full audit rebuild reuses that index
• Admin JS: shared batch runner for accessibility and bulk jobs (runFilikodBatchedJob)
• Documentation: FAQ and feature list updated; default behavior is ALT meta only, no image file changes
1.0.7
• Accessibility: "Remove Title Attribute" now works for new uploads (clears post_title after use); execution order enforced: generate ALT (from title then filename) → clean special chars → remove title (same order in bulk process)
• ALT Audit page: Duplicated tab lists media sorted alphabetically by ALT so duplicates are grouped; saving an ALT in Duplicated tab reloads the list so media that are no longer duplicated disappear
• Security & coding standards: escaped outputs (menu icon via wp_localize_script; pagination printf), all variables in ALT audit view prefixed with filikod_ (PrefixAllGlobals)
1.0.6
• Readme and positioning update: ALT audit & bulk management first
• Clarified automation messaging (optional, controlled)
• Improved "Generic ALT" detection with additional real-world patterns (e.g. device/app filenames, placeholders, thumbnails)
• Reduced false positives in generic ALT classification (better normalization and matching)
1.0.5
• Added content context column in ALT audit (see where each image is used)
• Improved bulk ALT editing workflow
• Enhanced admin interface clarity
1.0.4
• Fix audit score calculation
• Adjusted description text
1.0.3
• Dashboard redesign with ALT Quality Score (0–100%)
• Multi-language generic ALT detection
• Donut gauge visualization for ALT Score
• Media Size Savings module and progress bars
• New audit utilities and filters
1.0.2
• Improved dashboard readability
• Added ALT coverage percentage
• Clarified resize behavior messaging
1.0.0
• Initial public release
• ALT automation (filename-based)
• Title removal & character cleanup
• Bulk processing for existing images
• Secure SVG sanitization
• Optional extended file types
• Modern tab-based dashboard