{"id":261474,"date":"2025-12-05T21:57:58","date_gmt":"2025-12-05T21:57:58","guid":{"rendered":"https:\/\/en-ca.wordpress.org\/plugins\/media-folders-wp\/"},"modified":"2026-05-03T12:19:11","modified_gmt":"2026-05-03T12:19:11","slug":"jt-media-folders","status":"publish","type":"plugin","link":"https:\/\/ja.wordpress.org\/plugins\/jt-media-folders\/","author":14775632,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.6","stable_tag":"1.0.6","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"JT Media Folders","header_author":"Justin Truax","header_description":"Add and organize folders in your WordPress Media Library. Lightweight and easy to use. Optimized to work with bulk selection and editing.","assets_banners_color":"123b8f","last_updated":"2026-05-03 12:19:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/jtruax\/","rating":5,"author_block_rating":0,"active_installs":10,"downloads":627,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"JTruax","date":"2025-12-07 13:05:27"},"1.0.1":{"tag":"1.0.1","author":"JTruax","date":"2025-12-08 14:58:20"},"1.0.2":{"tag":"1.0.2","author":"JTruax","date":"2025-12-17 21:06:40"},"1.0.3":{"tag":"1.0.3","author":"JTruax","date":"2025-12-26 12:52:58"},"1.0.4":{"tag":"1.0.4","author":"JTruax","date":"2026-03-14 23:20:49"},"1.0.5":{"tag":"1.0.5","author":"JTruax","date":"2026-05-02 12:51:40"},"1.0.6":{"tag":"1.0.6","author":"JTruax","date":"2026-05-03 12:19:11"}},"upgrade_notice":{"1.0.6":"<p>Fixes &quot;Add Folder&quot; button alignment in the Media Library sidebar on live sites.<\/p>","1.0.5":"<p>Adds bulk-assign in the Gutenberg Media Modal, infinite scrolling for large libraries, multi-category assignment, and security hardening.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3413509,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3482727,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3413509,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3422309,"resolution":"1","location":"assets","locale":"","width":3020,"height":970},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3413509,"resolution":"2","location":"assets","locale":"","width":3024,"height":1596},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3413509,"resolution":"3","location":"assets","locale":"","width":3010,"height":1654}},"screenshots":{"1":"Media Library with folder sidebar and filtering","2":"Folder management interface","3":"Gutenberg media modal with folder integration"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[9747,148076,1980,84,5884],"plugin_category":[50],"plugin_contributors":[251901],"plugin_business_model":[],"class_list":["post-261474","plugin","type-plugin","status-publish","hentry","plugin_tags-folders","plugin_tags-gutenberg","plugin_tags-library","plugin_tags-media","plugin_tags-organization","plugin_category-media","plugin_contributors-jtruax","plugin_committers-jtruax"],"banners":{"banner":"https:\/\/ps.w.org\/jt-media-folders\/assets\/banner-772x250.png?rev=3413509","banner_2x":"https:\/\/ps.w.org\/jt-media-folders\/assets\/banner-1544x500.png?rev=3482727","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/jt-media-folders\/assets\/icon-256x256.png?rev=3413509","icon_2x":"https:\/\/ps.w.org\/jt-media-folders\/assets\/icon-256x256.png?rev=3413509","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/jt-media-folders\/assets\/screenshot-1.png?rev=3422309","caption":"Media Library with folder sidebar and filtering"},{"src":"https:\/\/ps.w.org\/jt-media-folders\/assets\/screenshot-2.png?rev=3413509","caption":"Folder management interface"},{"src":"https:\/\/ps.w.org\/jt-media-folders\/assets\/screenshot-3.png?rev=3413509","caption":"Gutenberg media modal with folder integration"}],"raw_content":"<!--section=description-->\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Folder Organization<\/strong>: Create, edit, and delete media folders\/categories<\/li>\n<li><strong>AJAX Filtering<\/strong>: Filters media items using AJAX<\/li>\n<li><strong>Bulk Operations<\/strong>: Assign multiple media items to folders using WordPress bulk selection (Grid + List view)<\/li>\n<li><strong>Made for Gutenberg<\/strong>: Full integration with the Gutenberg editor (when inserting media into posts\/pages)<\/li>\n<li><strong>Hierarchical Structure<\/strong>: Support for nested folders (parent\/child relationships)<\/li>\n<li><strong>Lightweight<\/strong>: Plugin was developed with performance in mind<\/li>\n<li><strong>Non-intrusive UI<\/strong>: Clean and simple user interface and controls that are mobile-friendly<\/li>\n<li><strong>100% free<\/strong>: This plugin is free to use, no paywalls or annoying notices<\/li>\n<\/ul>\n\n<h4>Creating Folders<\/h4>\n\n<ol>\n<li>Go to Media &gt; Library in your WordPress admin<\/li>\n<li>Click the \"Add Folder\" button in the left sidebar<\/li>\n<li>Enter a folder name and optional description<\/li>\n<li>Optionally select a parent folder for hierarchical organization<\/li>\n<li>Click \"Save\" to create the folder<\/li>\n<\/ol>\n\n<h4>Organizing Media<\/h4>\n\n<p><strong>Individual Assignment:<\/strong><\/p>\n\n<ul>\n<li>Click on any media item to edit it<\/li>\n<li>Select a folder from the \"Folder\" dropdown<\/li>\n<li>Save the changes<\/li>\n<\/ul>\n\n<p><strong>Bulk Assignment (Works in both List and Grid views):<\/strong><\/p>\n\n<p><em>List View:<\/em><\/p>\n\n<ol>\n<li>Select multiple media items using checkboxes<\/li>\n<li>Choose a folder from the dropdown in the sidebar's \"Bulk Actions\" section<\/li>\n<li>Click \"Assign Selected\" to move all selected items to the chosen folder<\/li>\n<\/ol>\n\n<p><em>Grid View:<\/em><\/p>\n\n<ol>\n<li>Click on media items to select them (they'll show a blue border when selected)<\/li>\n<li>Choose a folder from the dropdown in the sidebar's \"Bulk Actions\" section<\/li>\n<li>Click \"Assign Selected\" to move all selected items to the chosen folder<\/li>\n<\/ol>\n\n<h4>Managing Folders<\/h4>\n\n<ul>\n<li><strong>Edit<\/strong>: Click the pencil icon (\u270f\ufe0f) next to any folder name<\/li>\n<li><strong>Delete<\/strong>: Click the trash icon (\ud83d\uddd1\ufe0f) next to any folder name<\/li>\n<li><strong>Smart Filter<\/strong>: Click on any folder name to filter the media library by that folder<\/li>\n<li><strong>All Files<\/strong>: Click on \"All Files\" to show all media regardless of folder assignment<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>MySQL 5.6 or higher<\/li>\n<\/ul>\n\n<h4>Security<\/h4>\n\n<p>The plugin follows WordPress security best practices:<\/p>\n\n<ul>\n<li>Nonce verification for all AJAX requests<\/li>\n<li>Data sanitization and validation<\/li>\n<li>Capability checks for user permissions<\/li>\n<li>SQL injection prevention using $wpdb-&gt;prepare()<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>jt-media-folders<\/code> folder to your <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Navigate to Media &gt; Library to start organizing your media files<\/li>\n<\/ol>\n\n<h4>Main Media Library<\/h4>\n\n<p>Access via <strong>Media &gt; Library<\/strong> in WordPress admin for full folder management capabilities.<\/p>\n\n<h4>Gutenberg Media Modal<\/h4>\n\n<p>When inserting media into posts\/pages, the plugin automatically adds a sidebar to the media modal for easy filtering and organization.<\/p>\n\n<!--section=changelog-->\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Fixed: \"Add Folder\" button content alignment on Media Library sidebar<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>New feature added: Bulk-assign items from the Gutenberg Media Modal<\/li>\n<li>Added infinite scrolling for large libraries<\/li>\n<li>Added toggle collapse for Media Library page<\/li>\n<li>Allowed media files to be assigned multiple categories<\/li>\n<li>Security: harden AJAX auth, fix orphaned assignments, strip internal error details<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fixes for the Gallery block<\/li>\n<li>Added ability to edit folder names in Gutenberg<\/li>\n<li>UI improvements<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed issue when editing multiple folder names<\/li>\n<li>Updates to Gutenberg folder selection field<\/li>\n<li>Updates to search field<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>New feature added: Click &amp; drag folder reordering.<\/li>\n<li>Security hardening: Added category existence validation, prevented default category manipulation, and improved input sanitization for the folder reordering feature.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>AJAX filtering improvements<\/li>\n<li>UI fixes for Media Library while in List view<\/li>\n<li>Mobile improvements<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Folder creation, editing, and deletion<\/li>\n<li>Bulk media assignment<\/li>\n<li>Media library integration<\/li>\n<li>Hierarchical folder structure<\/li>\n<li>Modern, responsive interface<\/li>\n<\/ul>","raw_excerpt":"A lightweight solution to add categorized folders to your WordPress Media Library. Works with bulk selection. Optimized for the Gutenberg editor.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/261474","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=261474"}],"author":[{"embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jtruax"}],"wp:attachment":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=261474"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=261474"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=261474"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=261474"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=261474"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=261474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}