Flexa Media Folders
Flexa Media Folders

Flexa Media Folders

0/5 (0 ratings) — active installs Updated Sep 20, 2026

Flexa Media Folders adds a hierarchical, drag-and-drop folder tree to the WordPress Media Library. Group images, videos, documents and any other attachment into nested folders, then filter the library to a single folder with one click – in the grid view, the list view, and the media picker inside the post editor.

Folders are stored in two dedicated, indexed database tables, so your wp_term* tables stay clean and the tree loads fast even with thousands of files.

Features

  • Hierarchical folder tree – create unlimited nested folders, rename them, and reorder them by drag-and-drop.
  • Drag attachments into folders – drag an item from the Media Library straight onto a folder.
  • Works everywhere the Media Library does – the folder sidebar appears on the Media grid, the list view (upload.php), and the media modal in both the block editor and the Classic Editor.
  • One-click filtering – click a folder to filter the library to it, plus built-in “All files” and “Uncategorized” views.
  • Color labels – assign one of 18 colors to any folder from the right-click menu to spot it at a glance.
  • Full context menu – New Folder, Rename, Cut, Paste, Delete and Change Color, all from a right-click.
  • File counts – each folder can show how many attachments it contains (toggle in Settings).
  • Folder search – filter the folder tree as you type.
  • Settings page – choose a default folder for new uploads (none / last used / a specific folder), set the folder sort order, toggle file counts, and exclude specific post types from showing the sidebar.
  • Dark mode – the tree automatically follows your WordPress admin color scheme.
  • Accessible – full ARIA tree semantics, keyboard navigation, and visible focus styles.
  • Translation ready – every string is internationalized and a .pot template is bundled.
  • REST API – all screens are powered by a REST API under /wp-json/flexa-mf/v1/, so external integrations and your own code can read and manage folders too.
  • WP-CLI – manage folders and reset plugin data from the command line with wp flexa-mf.
  • Clean uninstall – a Settings danger zone (and wp flexa-mf reset) wipes all plugin data on demand; uninstalling the plugin drops its tables. Your media files are never touched.

Source code for compiled JavaScript and CSS

The plugin ships with minified/compiled JavaScript and CSS in assets/dist/. The human-readable source code for these assets is publicly available and maintained at:

https://github.com/flexatech/flexa-media-folders

The assets are built with pnpm and Vite. To build them from source:

  1. pnpm install
  2. pnpm build (production build; the Vite config lives at apps/admin/vite.config.ts)

Use pnpm dev for a watched development build.

External services

All of your folders and media stay on your own site. The plugin connects to one external service, only in the admin area, for the single reason below.

Deactivation feedback (Flexa Product Intelligence)

When you go to deactivate Flexa Media Folders on the Plugins screen, a short optional survey asks why. It is served by Flexa’s product intelligence service at https://product-intelligence.flexacommerce.com. It runs only in the admin, on wp-admin/plugins.php, never on the front end, and never blocks or delays deactivation. What is sent, and when:

  • On opening the Plugins screen: a request to /api/v1/config (product slug and tier) to load the survey configuration. The response is cached for 6 hours.
  • When you deactivate or interact with the survey: the reason you pick and any optional message you type, sent to /api/v1/deactivations, /api/v1/events, /api/v1/feedback, /api/v1/feature-requests and /api/v1/recovery-events.

Every request includes an anonymous per-site identifier (a random UUID), the plugin version and tier, and by default your WordPress version, PHP version and locale. No email, site domain, user identity or raw IP is collected. To stop sending environment data, use add_filter( 'flexa_mf/deactivation_survey/config', function ( $c ) { return array( 'collect_environment' => false ) + $c; } );. To disable the survey entirely, use add_filter( 'flexa_mf/deactivation_survey/enabled', '__return_false' );.
Terms of Service: https://flexacommerce.com/pages/terms
Privacy Policy: https://flexacommerce.com/pages/privacy