Migrating from another folder plugin
You see what will happen before it happens, nothing is taken from the other plugin, and the whole import can be undone from the same screen.
VergeLabs Library → Import folders.
What it reads #
Seven plugins, plus CSV as an eighth source:
| Source | Where it keeps folders |
|---|---|
| Folders (Premio) | A taxonomy |
| HappyFiles | A taxonomy |
| Wicked Folders | A taxonomy |
| WP Media Folder (JoomUnited) | A taxonomy |
| WP Media Folders (Damien Barrère) | A taxonomy |
| FileBird | Its own fbv and fbv_attachment_folder tables |
| Real Media Library | Its own tables |
| A CSV file | See Folders as a spreadsheet |
Enhanced Media Library is not on the list because it is not an import: this plugin is a fork of it, and its settings are copied across when you activate. See Coming from Enhanced Media Library.
Every source is normalised into one internal shape — folders as
id → { name, parent }, files as folder id → attachment ids — and the plan, the
chunked run and the undo all work on that shape without knowing where it came from.
That is why a CSV inherits all of the same safety without being a second importer.
How an import runs #
1. It shows you the plan first. How many folders, how many file assignments, and — the part that matters — which incoming folders will merge with folders you already have rather than being created beside them.
2. It runs in chunks. 500 rows at a time by default, filterable with
vergeml_import_chunk. It cannot time out on shared hosting, and you can watch it
count.
3. Nothing is taken from the source plugin. FileBird's tables still have everything in them when the import finishes. You can keep both installed while you click around, and switch back at any time.
4. Undo is on the same screen. Every import is logged (the vergeml_imports
option) with exactly what it created, so undoing it removes what it did and
nothing else.
Coming from Enhanced Media Library specifically #
This plugin is a fork of EML, so the path is shorter than an import.
Activating this plugin copies EML's settings across automatically: taxonomies,
taxonomy options, library and filter options, custom MIME types, ordering, gallery
options. EML's own wpuxss_eml_* options are left untouched, so rolling back still
finds its settings exactly as they were.
Your files do not move at all — EML also used media_category, so every term
assignment is already in the right place.
Order of operations:
- Deactivate Enhanced Media Library.
- Activate VergeLabs Media Library.
- Click through your library once — the toolbar, the list view, the media modal inside a post.
- Then delete EML.
If you install this one before deactivating EML, your site does not break. Every function, class, option, script handle and AJAX action carries its own prefix. You will simply see each taxonomy twice until you deactivate EML.
This path has its own test suite — eighteen checks against a real EML 2.9.4 install with settings moved off their defaults, terms created and files filed. See Compatibility.
Folders as a spreadsheet #
The same screen writes your whole structure out as CSV and reads it back.
The format is one row per assignment:
folder,attachment_id,filename
Clients/Acme/2024,1841,acme-hero.jpg
Clients/Acme/Logos,,
- Slashes separate levels, so a nested tree survives the round trip.
- A row with no attachment id is an empty folder. Without those, an empty folder would vanish on the way out and never come back.
- The
filenamecolumn is for you, not for the importer — it is written on export so a human can read the file, and ignored on import.
Limits: 200,000 rows, 12 levels deep.
This is how you build two hundred folders without two hundred clicks, and it is also how you take your structure somewhere else.
Taking a folder out as a ZIP #
Any folder can be downloaded as a single archive, with sub-folders included as directories, named after the folder. Right-click the folder in the tree → Download as ZIP.
Leaving #
Deleting this plugin leaves your folders in place — they are media_category
terms in WordPress's own tables. Any other plugin that reads that taxonomy picks
them up.
That is the point of the taxonomy decision, and it cuts both ways on purpose.
Written from version 3.15.0 of the plugin. Last updated 2026-10-02. All documentation · Legal · Support