{"id":366108,"date":"2026-09-10T05:52:48","date_gmt":"2026-09-10T05:52:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/folderforge\/"},"modified":"2026-09-10T12:23:16","modified_gmt":"2026-09-10T12:23:16","slug":"folderforge","status":"publish","type":"plugin","link":"https:\/\/bel.wordpress.org\/plugins\/folderforge\/","author":23485201,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"FolderForge","header_author":"Approid Tech","header_description":"Organize the WordPress media library with folders, tags, AI auto-tagging, smart folders, per-folder permissions, and duplicate detection.","assets_banners_color":"cbcdcd","last_updated":"2026-09-10 12:23:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/approidtech.com\/folderforge\/","header_author_uri":"https:\/\/approidtech.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"approidtech","date":"2026-09-10 12:23:16","revision":3689883},"1.0.1":{"tag":"1.0.1","author":"approidtech","date":"2026-09-10 12:23:16","revision":3689883}},"upgrade_notice":{"1.0.1":"<p>Drag-and-drop reliability fixes, no more page reload after bulk move, and a new &quot;Move to root&quot; context menu option.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3689883,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3689883,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3689883,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3689883,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"folderforge\/folder-gallery":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"folderforge\/folder-gallery","title":"FolderForge Gallery","description":"Display a media folder as a responsive gallery.","category":"media","icon":"images-alt2","keywords":["gallery","folder","media","folderforge"],"textdomain":"folderforge","supports":{"align":["wide","full"],"html":false},"attributes":{"folderId":{"type":"number","default":0},"columns":{"type":"number","default":3},"showCaptions":{"type":"boolean","default":false},"linkTo":{"type":"string","default":"file"},"limit":{"type":"number","default":24}},"editorScript":"file:.\/edit.js","editorStyle":"file:.\/edit.css","style":"file:.\/style.css"}},"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3689883,"resolution":"1","location":"assets","locale":"","width":1600,"height":1130},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3689883,"resolution":"2","location":"assets","locale":"","width":1600,"height":1055},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3689883,"resolution":"3","location":"assets","locale":"","width":1600,"height":840},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3689883,"resolution":"4","location":"assets","locale":"","width":1600,"height":697},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3689883,"resolution":"5","location":"assets","locale":"","width":1600,"height":892}},"screenshots":{"1":"Media Library with the FolderForge folder tree in the sidebar.","2":"Right-click context menu with keyboard shortcuts.","3":"Smart Folders builder \u2014 filter by MIME type, upload date, alt-text status, size, and more.","4":"Duplicate detection page showing exact and perceptually-similar image groups.","5":"Permissions modal for granting per-folder access to users or roles."}},"plugin_section":[],"plugin_tags":[2353,17214,9747,233,143842],"plugin_category":[],"plugin_contributors":[266915,94250],"plugin_business_model":[],"class_list":["post-366108","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-alt-text","plugin_tags-folders","plugin_tags-media-library","plugin_tags-media-organizer","plugin_contributors-approidtech","plugin_contributors-punitpatel-1","plugin_committers-approidtech"],"banners":{"banner":"https:\/\/ps.w.org\/folderforge\/assets\/banner-772x250.png?rev=3689883","banner_2x":"https:\/\/ps.w.org\/folderforge\/assets\/banner-1544x500.png?rev=3689883","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/folderforge\/assets\/icon-128x128.png?rev=3689883","icon_2x":"https:\/\/ps.w.org\/folderforge\/assets\/icon-256x256.png?rev=3689883","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/folderforge\/assets\/screenshot-1.png?rev=3689883","caption":"Media Library with the FolderForge folder tree in the sidebar."},{"src":"https:\/\/ps.w.org\/folderforge\/assets\/screenshot-2.png?rev=3689883","caption":"Right-click context menu with keyboard shortcuts."},{"src":"https:\/\/ps.w.org\/folderforge\/assets\/screenshot-3.png?rev=3689883","caption":"Smart Folders builder \u2014 filter by MIME type, upload date, alt-text status, size, and more."},{"src":"https:\/\/ps.w.org\/folderforge\/assets\/screenshot-4.png?rev=3689883","caption":"Duplicate detection page showing exact and perceptually-similar image groups."},{"src":"https:\/\/ps.w.org\/folderforge\/assets\/screenshot-5.png?rev=3689883","caption":"Permissions modal for granting per-folder access to users or roles."}],"raw_content":"<!--section=description-->\n<p>[youtube https:\/\/www.youtube.com\/watch?v=WJeKc0T040E]<\/p>\n\n<p><strong>FolderForge turns the WordPress media library into a proper asset manager.<\/strong> Organize thousands of files with <strong>drag-and-drop folders<\/strong>, tag them <strong>manually or automatically with an AI provider<\/strong>, control <strong>access per folder<\/strong>, catch <strong>duplicates<\/strong> before they clutter your library, and <strong>undo any change<\/strong> from a full audit trail.<\/p>\n\n<h4>Why FolderForge?<\/h4>\n\n<p>Most media folder plugins stop at nested folders. <strong>FolderForge goes further:<\/strong><\/p>\n\n<ul>\n<li><strong>AI auto-tagging and alt text<\/strong> \u2014 vision models generate tags and alt text on upload<\/li>\n<li><strong>Tags alongside folders<\/strong> \u2014 files can live in one folder but have many tags<\/li>\n<li><strong>Smart folders<\/strong> \u2014 dynamic queries like \"PDFs uploaded this month\" or \"images without alt text\"<\/li>\n<li><strong>Per-folder permissions<\/strong> \u2014 real ACLs by user or role<\/li>\n<li><strong>Duplicate detection with perceptual hashing<\/strong> \u2014 catches near-duplicates, not just exact matches<\/li>\n<li><strong>Bulk operations that scale<\/strong> \u2014 batch move, tag, and delete via a proper bulk API<\/li>\n<li><strong>Full audit log with undo<\/strong> \u2014 never lose work to a mis-click<\/li>\n<li><strong>One-click import<\/strong> from FileBird, HappyFiles, Real Media Library, WP Media Folder, Wicked Folders, Enhanced Media Library, and Folders (Premio)<\/li>\n<\/ul>\n\n<h4>Core Features<\/h4>\n\n<p><strong>Folders<\/strong><\/p>\n\n<ul>\n<li><strong>Unlimited nested folders<\/strong> with drag-and-drop<\/li>\n<li><strong>Custom folder colors<\/strong> \u2014 10-color preset palette<\/li>\n<li><strong>Custom folder icons<\/strong> \u2014 22-icon grid picker<\/li>\n<li><strong>Right-click context menu<\/strong> with keyboard shortcuts (F2 rename, Del delete, Ctrl+Shift+N new)<\/li>\n<li><strong>Breadcrumb trail<\/strong> in the Media Library<\/li>\n<li><strong>Non-destructive<\/strong> \u2014 files stay in place, permalinks never break<\/li>\n<\/ul>\n\n<p><strong>Tags<\/strong><\/p>\n\n<ul>\n<li>Files can live in <strong>one folder<\/strong> but have <strong>many tags<\/strong><\/li>\n<li><strong>Manual or AI-generated<\/strong> tags with source + confidence tracking<\/li>\n<li><strong>Bulk tag<\/strong> multiple attachments at once<\/li>\n<\/ul>\n\n<p><strong>AI Features (optional)<\/strong><\/p>\n\n<ul>\n<li><strong>AI auto-tagging<\/strong> on upload using WordPress core AI Client<\/li>\n<li><strong>Automatic alt text<\/strong> for accessibility and SEO<\/li>\n<li><strong>Manual \"Analyze with AI\"<\/strong> button on any attachment<\/li>\n<li><strong>Bulk AI Analyze<\/strong> for existing media<\/li>\n<li><strong>No API keys stored<\/strong> \u2014 credentials live in the official AI Provider connector plugins<\/li>\n<\/ul>\n\n<p><strong>Smart Folders<\/strong><\/p>\n\n<ul>\n<li><strong>Saved dynamic queries<\/strong> \u2014 filter by MIME type, upload date, author, size, missing alt text, tags<\/li>\n<li><strong>Live preview count<\/strong> in the builder<\/li>\n<li><strong>Owner-only access<\/strong> \u2014 creator or admin<\/li>\n<\/ul>\n\n<p><strong>Permissions<\/strong><\/p>\n\n<ul>\n<li><strong>Read \/ Write \/ Delete \/ Admin<\/strong> capability hierarchy<\/li>\n<li><strong>Grant to users OR roles<\/strong><\/li>\n<li><strong>Inherits from parent<\/strong> folder unless overridden<\/li>\n<li><strong>Site admins bypass<\/strong> all checks; folder creators always have admin on their own folders<\/li>\n<\/ul>\n\n<p><strong>Bulk Operations<\/strong><\/p>\n\n<ul>\n<li><strong>Move<\/strong>, <strong>Tag<\/strong>, <strong>AI Analyze<\/strong>, or <strong>Delete<\/strong> multiple files at once<\/li>\n<li><strong>Toolbar in the Media Library<\/strong> with a live selected-count and folder dropdown<\/li>\n<\/ul>\n\n<p><strong>Duplicate Detection<\/strong><\/p>\n\n<ul>\n<li><strong>SHA-256 exact hashing<\/strong> \u2014 catches identical files<\/li>\n<li><strong>Perceptual (aHash)<\/strong> on images \u2014 catches resized \/ re-saved \/ format-converted near-duplicates<\/li>\n<li><strong>Upload-time warning<\/strong> \u2014 client-side scan before upload, shows existing matches<\/li>\n<li><strong>Admin dashboard<\/strong> grouped by hash<\/li>\n<\/ul>\n\n<p><strong>Audit Log + Undo<\/strong><\/p>\n\n<ul>\n<li><strong>Every mutation is logged<\/strong> with user, timestamp, and undo payload<\/li>\n<li><strong>Undo toasts<\/strong> on destructive actions<\/li>\n<li><strong>Server-side undo endpoint<\/strong> for folder create \/ update \/ delete \/ move, bulk moves, auto-assigns<\/li>\n<\/ul>\n\n<p><strong>Gutenberg Gallery Block<\/strong><\/p>\n\n<ul>\n<li><strong>FolderForge Gallery<\/strong> block \u2014 pick a folder, set columns and limit, done<\/li>\n<li><strong>Live preview<\/strong> in the editor<\/li>\n<li><strong>Responsive grid<\/strong> with lazy-loaded images<\/li>\n<\/ul>\n\n<p><strong>Coexistence and Migration<\/strong><\/p>\n\n<ul>\n<li><strong>Detects 9 competing plugins<\/strong> and gracefully disables its own UI when they are active<\/li>\n<li><strong>One-click importers<\/strong> for FileBird, Real Media Library, HappyFiles, WP Media Folder, Wicked Folders, Enhanced Media Library, and Folders (Premio)<\/li>\n<li><strong>Source data is never modified<\/strong> \u2014 safe to keep the other plugin running until verified<\/li>\n<\/ul>\n\n<p><strong>Developer Surface<\/strong><\/p>\n\n<ul>\n<li><strong>27 REST endpoints<\/strong> under <code>folderforge\/v1<\/code><\/li>\n<li><strong>Object-level permission checks<\/strong> on every endpoint<\/li>\n<li><strong>Filter and action hooks<\/strong> for custom importers, AI byte limits, and bootstrap events<\/li>\n<\/ul>\n\n<h4>AI Provider Integration<\/h4>\n\n<p>FolderForge integrates with the <strong>WordPress AI Client<\/strong> (available in WordPress 7.0 and later). Install any <strong>AI Provider connector plugin<\/strong>, configure it once, and FolderForge will route requests through it automatically. <strong>No API keys are stored<\/strong> in FolderForge itself.<\/p>\n\n<h4>Third-Party Services<\/h4>\n\n<p>When AI features are enabled, image bytes and a fixed prompt are sent to the AI provider you have configured (for example Anthropic, OpenAI, or Google). <strong>This transmission only happens when you enable auto-tagging, auto alt text, or click \"Analyze with AI\"<\/strong> on an attachment. See each provider's terms of service and privacy policy for how they process image data.<\/p>\n\n<p>Provider documentation and policies:<\/p>\n\n<ul>\n<li><strong>Anthropic<\/strong> \u2014 https:\/\/www.anthropic.com\/legal\/consumer-terms<\/li>\n<li><strong>OpenAI<\/strong> \u2014 https:\/\/openai.com\/policies\/terms-of-use<\/li>\n<li><strong>Google Gemini<\/strong> \u2014 https:\/\/policies.google.com\/terms\/generative-ai<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>folderforge<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li><strong>Activate<\/strong> the plugin through the Plugins menu in WordPress.<\/li>\n<li>You will be taken to the <strong>FolderForge welcome dashboard<\/strong> automatically.<\/li>\n<li><em>(Optional)<\/em> Install and configure an AI Provider connector plugin, then go to <strong>FolderForge \u2192 Settings<\/strong>.<\/li>\n<li>Start organizing from the <strong>Media Library sidebar<\/strong> or the FolderForge menu.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20folderforge%20move%20my%20files%20on%20the%20server%3F\"><h3>Does FolderForge move my files on the server?<\/h3><\/dt>\n<dd><p><strong>No.<\/strong> Folders are virtual \u2014 files stay in <code>wp-content\/uploads\/YYYY\/MM\/<\/code>, so <strong>permalinks never break<\/strong>.<\/p><\/dd>\n<dt id=\"is%20an%20ai%20provider%20required%3F\"><h3>Is an AI provider required?<\/h3><\/dt>\n<dd><p><strong>No.<\/strong> AI features are optional. Without an AI Provider connector plugin you still get <strong>folders, tags, smart folders, permissions, duplicate detection, and the audit log<\/strong>.<\/p><\/dd>\n<dt id=\"can%20i%20import%20folders%20from%20another%20media-folder%20plugin%3F\"><h3>Can I import folders from another media-folder plugin?<\/h3><\/dt>\n<dd><p><strong>Yes.<\/strong> Go to <strong>FolderForge \u2192 Settings \u2192 Import from another plugin<\/strong>. FolderForge reads data directly from the other plugin's tables or taxonomies and copies it in. <strong>The source data is never modified<\/strong>, so you can keep the other plugin running until you have verified the import.<\/p>\n\n<p>Supported sources: <strong>FileBird, Real Media Library, HappyFiles, WP Media Folder, Wicked Folders, Enhanced Media Library, Folders (Premio)<\/strong>.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20another%20folder%20plugin%20is%20active%20on%20the%20same%20site%3F\"><h3>What happens if another folder plugin is active on the same site?<\/h3><\/dt>\n<dd><p>FolderForge <strong>detects it and disables its own Media Library sidebar<\/strong> to avoid overlap. All of FolderForge's own admin pages continue to work. Deactivate the other plugin (or use the override in Settings) to re-enable full mode.<\/p><\/dd>\n<dt id=\"does%20it%20work%20if%20my%20server%20has%20broken%20permalinks%20%2F%20mod_rewrite%3F\"><h3>Does it work if my server has broken permalinks \/ mod_rewrite?<\/h3><\/dt>\n<dd><p><strong>Yes.<\/strong> FolderForge uses the query-string REST format internally, so it works even when <code>\/wp-json\/<\/code> URLs are broken by missing <code>.htaccess<\/code> or disabled <code>mod_rewrite<\/code>.<\/p><\/dd>\n<dt id=\"where%20can%20i%20report%20bugs%20or%20request%20features%3F\"><h3>Where can I report bugs or request features?<\/h3><\/dt>\n<dd><p>Visit <strong>https:\/\/approidtech.com\/folderforge\/support<\/strong>, use the plugin's <strong>support forum on WordPress.org<\/strong>, or email <strong>support@approidtech.com<\/strong>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed: Folder row stuck in yellow \"loading\" state after drag-and-drop image onto folder.<\/li>\n<li>Fixed: Full page reload after bulk-moving files, which reset scroll position and briefly zeroed folder counts.<\/li>\n<li>Fixed: Folder-to-folder drag now visually reparents the folder in the tree immediately.<\/li>\n<li>Fixed: Destination folder count now updates instantly on drag-drop and bulk move.<\/li>\n<li>Added: \"Move to root\" option in the right-click context menu \u2014 promotes any child folder to top level.<\/li>\n<li>Improved: Instant visual feedback (green flash + count bump) on successful moves; the media grid no longer forces a page reload if wp.media's re-query stalls.<\/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 with folders, tags, AI auto-tagging, smart folders, per-folder permissions, and duplicate detection.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/366108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=366108"}],"author":[{"embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/approidtech"}],"wp:attachment":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=366108"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=366108"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=366108"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=366108"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=366108"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=366108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}