Kodlo Media Manager
Turn your Media Library requirements into clear, consistent upload rules.
Kodlo Media Manager adds a focused rules builder to Settings -> Media. Define which formats WordPress may accept, where each format is allowed, how large an upload may be, which image dimensions are acceptable, and how filenames should be formatted.
The plugin validates uploads on the server and provides early feedback in the standard WordPress media uploader. It uses native WordPress, PHP, and browser APIs and includes no third-party libraries or external services.
Why Use Kodlo Media Manager?
- Keep upload standards consistent: Replace written instructions with rules WordPress can enforce for supported upload flows.
- Control each format separately: Give SVG, WebP, AVIF, video, document, font, and archive formats their own policy and limits.
- Reduce duplicate filename clutter: Optionally block an exact normalized filename when it already exists in the Media Library.
- Normalize filenames: Mirror WordPress locale-aware accent conversion, transliterate supported Cyrillic characters, apply a predictable separator, and validate the final name.
- Handle SVG locally: Sanitize canonical
.svguploads with an internal allowlist before WordPress stores them. - Stay inside familiar WordPress screens: Configure everything on the native Media Settings page and use the standard media uploader.
Upload Rules
Each rule combines a file extension and MIME type with one of three policies:
- Allowed (Media Library Only): Accept the format in verified WordPress Media Library upload contexts.
- Allowed (Globally): Allow the format in other WordPress upload contexts as well.
- Blocked (Globally): Reject the format throughout WordPress upload handling.
An administrator can also set a per-format maximum file size and, for raster images, maximum width and height. Dangerous executable and active-content formats remain unavailable even if they are submitted through malformed settings data.
Filename and Duplicate Controls
The filename validator accepts a bounded regular-expression subset shared by PHP and JavaScript. Unsupported, malformed, or excessive patterns fall back to the plugin’s safe default. Optional auto-sanitization can reshape filenames for compatible positive character-class patterns before validation; safe validation-only patterns remain available without automatic rewriting.
Duplicate Guard compares exact normalized basenames rather than image contents. Every distinct filename is checked directly against Media Library attachment metadata. Short-lived hashed upload locks prevent two plugin-managed requests from claiming the same available filename at the same time, without building a filename index or custom database table.
SVG Handling
The internal SVG sanitizer accepts a limited set of SVG elements and attributes, removes unsupported content, rejects document types and entities, and permits only safe internal fragment references. It also applies a fixed payload ceiling before DOM parsing. SVG content must use the canonical .svg extension and image/svg+xml MIME pair.
SVG sanitization is a focused upload safeguard. It does not replace appropriate WordPress capabilities, server hardening, backups, or review of untrusted content.
Media Uploader Experience
The browser-side guard mirrors format, filename, size, dimension, and duplicate checks to provide feedback before an upload begins. Asynchronous dimension probes and duplicate lookups share one validation barrier, use bounded batches, concurrency, and timeouts, and finish before a paused queue resumes. Invalid or unavailable duplicate responses stop affected files and explain the failure. Server-side validation remains authoritative for native uploads and sideload-based REST uploads.
Warning dialogs use native button semantics, labelled dialog markup, Escape handling, managed keyboard focus, and focus restoration. Settings controls include accessible names and predictable focus movement when rules are added or removed.
Default Configuration
The initial rules allow ZIP globally so WordPress can upload plugin and theme packages. SVG, WebP, AVIF, MP4, WebM, PDF, DOCX, and WOFF2 start in Media Library contexts with format-specific limits, while JPG, JPEG, and PNG start blocked. These defaults are a starting point, not a universal recommendation; review them for your site’s editorial workflow and hosting limits.
By default, verified uploads initiated by an administrator from WordPress General Settings bypass format, filename, duplicate, size, and dimension policies so core settings such as the site icon are not unexpectedly blocked. SVG files are still sanitized. Enable General Settings Page Uploads to apply the configured policies there as well.
Security
Report a suspected vulnerability privately through the Contact button at https://kodlo.dev/. Please include the affected plugin version, WordPress and PHP environment details, observed impact, reproducible steps, required privileges, and a minimal proof of concept.
Do not include passwords, API keys, customer data, or other credentials. Do not publish exploit details in a support topic before the report can be assessed. Use the public support forum only for non-sensitive support questions.
Privacy
Kodlo Media Manager operates locally and does not send upload data, filenames, settings, telemetry, or analytics to Kodlo or any other external service.
The plugin stores its configuration in WordPress options. Duplicate Guard does not create a filename index or custom table. During an upload it may store a short-lived site option containing a filename hash, ownership token, and timestamp; the original filename is not stored in that lock.
Deactivation preserves the plugin settings. Successful upload locks are removed immediately; an abandoned expired lock is reclaimed when the same filename is checked again.
