{"id":350071,"date":"2026-08-08T16:04:18","date_gmt":"2026-08-08T16:04:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/unstoppable-media-folders\/"},"modified":"2026-08-08T16:04:09","modified_gmt":"2026-08-08T16:04:09","slug":"unstoppable-media-folders","status":"publish","type":"plugin","link":"https:\/\/lo.wordpress.org\/plugins\/unstoppable-media-folders\/","author":13116230,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0.3","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Unstoppable Media Folders","header_author":"Unstoppable Solutions","header_description":"Organize the WordPress Media Library into virtual, nestable folders without moving files on disk. Existing media URLs never break.","assets_banners_color":"9a804a","last_updated":"2026-08-08 16:04:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/unstoppablesolutions.app\/plugins\/unstoppable-media-folders","header_author_uri":"https:\/\/unstoppablesolutions.app","rating":0,"author_block_rating":0,"active_installs":0,"downloads":40,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"paramedic192","date":"2026-08-08 16:04:09"}},"upgrade_notice":{"1.0.1":"<p>Code-quality pass for Plugin Check compliance. Recommended.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3638803,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3638803,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3638803,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3638803,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The folder sidebar in the Media Library, showing All Media, Uncategorized, and nested folders with item counts.","2":"Creating and nesting folders.","3":"Assigning a media item to folders from the attachment details panel.","4":"Moving media into a folder with drag-and-drop.","5":"The \"Move to folder\" bulk action in list view."}},"plugin_section":[],"plugin_tags":[1346,9747,233,274859,91],"plugin_category":[50,57],"plugin_contributors":[253147],"plugin_business_model":[],"class_list":["post-350071","plugin","type-plugin","status-publish","hentry","plugin_tags-attachments","plugin_tags-folders","plugin_tags-media-library","plugin_tags-media-organization","plugin_tags-taxonomy","plugin_category-media","plugin_category-taxonomy","plugin_contributors-paramedic192","plugin_committers-paramedic192"],"banners":{"banner":"https:\/\/ps.w.org\/unstoppable-media-folders\/assets\/banner-772x250.png?rev=3638803","banner_2x":"https:\/\/ps.w.org\/unstoppable-media-folders\/assets\/banner-1544x500.png?rev=3638803","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/unstoppable-media-folders\/assets\/icon-128x128.png?rev=3638803","icon_2x":"https:\/\/ps.w.org\/unstoppable-media-folders\/assets\/icon-256x256.png?rev=3638803","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Unstoppable Media Folders adds a folder sidebar to your WordPress Media Library so you can keep images, PDFs, and other attachments tidy.<\/p>\n\n<p>Folders are <strong>virtual<\/strong>: assigning a file to a folder only records a relationship in the database using a native WordPress taxonomy. Nothing is moved on the server, so every existing media URL keeps working.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Hierarchical \"Media Folders\" taxonomy attached to attachments.<\/li>\n<li>Folder sidebar on the Media Library (list and grid modes).<\/li>\n<li>Create, rename, delete, and nest folders (requires the <code>upload_files<\/code> capability).<\/li>\n<li>All Media, Uncategorized, and your own folders shown as a tree.<\/li>\n<li>Filter the library by clicking a folder.<\/li>\n<li>Assign one or more folders per item from the attachment details panel.<\/li>\n<li>Bulk \"Move to: folder\" actions in list view.<\/li>\n<li>Drag-and-drop media onto folders.<\/li>\n<li>Native \"Folders\" dropdown filter inside the media modal (block editor compatible).<\/li>\n<li>Deleting a folder never deletes media \u2014 items fall back to Uncategorized.<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin does not connect to, or send any data to, external services. It makes no remote requests, includes no tracking or telemetry, and has no license or activation system. All functionality runs entirely on your own site using the native WordPress taxonomy system.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>unstoppable-media-folders<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Open <strong>Media<\/strong> and use the <strong>Folders<\/strong> sidebar.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20move%20my%20files%3F\"><h3>Does this move my files?<\/h3><\/dt>\n<dd><p>No. Folders are stored as taxonomy terms in the database. Files stay exactly where they are and URLs do not change.<\/p><\/dd>\n<dt id=\"will%20it%20interfere%20with%20woocommerce%20product%20images%3F\"><h3>Will it interfere with WooCommerce product images?<\/h3><\/dt>\n<dd><p>No. It only adds an optional folder relationship and never alters the attachment, its URL, or its usage.<\/p><\/dd>\n<dt id=\"who%20can%20manage%20folders%3F\"><h3>Who can manage folders?<\/h3><\/dt>\n<dd><p>Any user with the <code>upload_files<\/code> capability (Authors and above by default).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Code quality: resolved Plugin Check warnings. Documented that all AJAX handlers verify their nonce via a shared helper, and prefixed file-scope variables in uninstall.php.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Organize the WordPress Media Library into virtual, nestable folders without moving any files. Existing image URLs never change.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/350071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=350071"}],"author":[{"embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/paramedic192"}],"wp:attachment":[{"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=350071"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=350071"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=350071"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=350071"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=350071"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=350071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}