{"id":290128,"date":"2026-03-23T10:34:16","date_gmt":"2026-03-23T10:34:16","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/hdwebmobile-media-folder-roles\/"},"modified":"2026-08-22T06:37:01","modified_gmt":"2026-08-22T06:37:01","slug":"hdwebmobile-media-folder-roles","status":"publish","type":"plugin","link":"https:\/\/ja.wordpress.org\/plugins\/hdwebmobile-media-folder-roles\/","author":9757813,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.5","stable_tag":"1.1.5","tested":"7.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"HDWebmobile Media Folder Roles","header_author":"htrxuan - Han Tran","header_description":"Manage media folders and set role-based permissions, compatible with PublishPress Capabilities.","assets_banners_color":"0f5847","last_updated":"2026-08-22 06:37:01","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/paypal.me\/htrxuan\/20","header_plugin_uri":"https:\/\/hdwebmobile.com\/plugins\/hdwebmobile-media-folder-roles\/","header_author_uri":"https:\/\/hdwebmobile.com\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":341,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.1.3":{"tag":"1.1.3","author":"htrxuan","date":"2026-03-23 10:36:19"},"1.1.4":{"tag":"1.1.4","author":"htrxuan","date":"2026-07-22 13:11:15"},"1.1.5":{"tag":"1.1.5","author":"htrxuan","date":"2026-08-22 06:37:01"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3620716,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3620716,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3620716,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3620716,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.3","1.1.4","1.1.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3623038,"resolution":"1","location":"assets","locale":"","width":2560,"height":1267},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3623038,"resolution":"2","location":"assets","locale":"","width":2560,"height":1267},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3623038,"resolution":"3","location":"assets","locale":"","width":2560,"height":1267}},"screenshots":{"1":"The Media Library with the Folders panel: browse, create, and drag-and-drop media between folders.","2":"Editing a folder's Allowed Roles \u2014 pick exactly which WordPress roles can see this folder's media.","3":"The Media &gt; Folders management screen for creating folder hierarchies."}},"plugin_section":[],"plugin_tags":[9747,84,895,258406,1915],"plugin_category":[50,54,58],"plugin_contributors":[254181],"plugin_business_model":[],"class_list":["post-290128","plugin","type-plugin","status-publish","hentry","plugin_tags-folders","plugin_tags-media","plugin_tags-permissions","plugin_tags-publishpress","plugin_tags-roles","plugin_category-media","plugin_category-security-and-spam-protection","plugin_category-user-management","plugin_contributors-htrxuan","plugin_committers-htrxuan"],"banners":{"banner":"https:\/\/ps.w.org\/hdwebmobile-media-folder-roles\/assets\/banner-772x250.png?rev=3620716","banner_2x":"https:\/\/ps.w.org\/hdwebmobile-media-folder-roles\/assets\/banner-1544x500.png?rev=3620716","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/hdwebmobile-media-folder-roles\/assets\/icon-128x128.png?rev=3620716","icon_2x":"https:\/\/ps.w.org\/hdwebmobile-media-folder-roles\/assets\/icon-256x256.png?rev=3620716","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/hdwebmobile-media-folder-roles\/assets\/screenshot-1.png?rev=3623038","caption":"The Media Library with the Folders panel: browse, create, and drag-and-drop media between folders."},{"src":"https:\/\/ps.w.org\/hdwebmobile-media-folder-roles\/assets\/screenshot-2.png?rev=3623038","caption":"Editing a folder's Allowed Roles \u2014 pick exactly which WordPress roles can see this folder's media."},{"src":"https:\/\/ps.w.org\/hdwebmobile-media-folder-roles\/assets\/screenshot-3.png?rev=3623038","caption":"The Media &gt; Folders management screen for creating folder hierarchies."}],"raw_content":"<!--section=description-->\n<p>HDWebmobile Media Folder Roles allows you to organize your WordPress Media Library into hierarchical folders and restrict access to these folders based on user roles.<\/p>\n\n<p>Key Features:\n* Create and manage hierarchical media folders.\n* Assign role-based permissions to each folder.\n* Restrict media viewing and editing based on folder permissions.\n* Fully compatible with PublishPress Capabilities for advanced role management.<\/p>\n\n<h3>How to Use<\/h3>\n\n<h4>1. Create your folders<\/h4>\n\n<p>Go to <strong>Media &gt; Folders<\/strong> (Screenshot 3). This is a standard WordPress taxonomy screen \u2014 add a folder by name the same way you'd add a category, and optionally assign a <strong>Parent Media Folder<\/strong> to build a hierarchy (e.g. \"Team Photos\" under \"Marketing\").<\/p>\n\n<h4>2. Set who can access each folder<\/h4>\n\n<p>Click into any folder to edit it and you'll see an <strong>Allowed Roles<\/strong> checklist (Screenshot 2) alongside the normal name\/slug\/parent\/description fields. Tick every role that should be able to view and use media inside that folder \u2014 Administrators can always access everything regardless of what's ticked. Leaving every box unticked means only Administrators can see that folder's contents.<\/p>\n\n<h4>3. Organize and browse from the Media Library<\/h4>\n\n<p>Open <strong>Media &gt; Library<\/strong> and you'll see a <strong>Folders<\/strong> panel added to the left of the normal grid\/list view (Screenshot 1). From here you can:<\/p>\n\n<ul>\n<li>Click <strong>New Folder<\/strong> to create one without leaving the Library.<\/li>\n<li>Drag and drop media items onto a folder in the sidebar to file them.<\/li>\n<li>Click a folder to filter the grid down to just its contents; click <strong>All Files<\/strong> to clear the filter.<\/li>\n<li>Use <strong>Rename<\/strong> \/ <strong>Delete<\/strong> above the folder tree while a folder is selected.<\/li>\n<\/ul>\n\n<h4>4. What non-admin users see<\/h4>\n\n<p>Once you save role restrictions on a folder, any logged-in user whose role isn't on that folder's Allowed Roles list will simply not see that folder or its media in their own Media Library \u2014 the filtering happens automatically on both the classic list view and the AJAX-driven media grid\/uploader, so it applies consistently everywhere media is selected (post editor, featured image, etc.).<\/p>\n\n<h4>5. Using PublishPress Capabilities (optional)<\/h4>\n\n<p>If you also run PublishPress Capabilities, its more granular capability controls layer on top of this plugin's role-based folder access without any extra setup \u2014 this plugin doesn't require PublishPress Capabilities to work on its own.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>hdwebmobile-media-folder-roles<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Go to Media &gt; Folders to start organizing your library.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Confirmed compatibility with WordPress 7.1.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Confirmed compatibility with WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Remove PHP session usage and switch selected-folder persistence to user meta.<\/li>\n<li>Strengthen security by requiring nonce and capability checks for upload and AJAX flows.<\/li>\n<li>Global rename of namespace, constants, classes, functions, and options to use the <code>hdwemefo<\/code> prefix for unique naming as per WordPress.org requirements.<\/li>\n<li>Replace generic taxonomy key with unique prefixed taxonomy (<code>hdwemefo_media_folder<\/code>) and include one-time migration from legacy <code>media_folder<\/code>.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Update version for WordPress.org upload.<\/li>\n<li>Add plugin list Donate link and taxonomy-page support notice.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with branding update and hdwemefo_ prefix.<\/li>\n<\/ul>","raw_excerpt":"Manage media folders and set role-based permissions for your WordPress Media Library. Compatible with PublishPress Capabilities.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/290128","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=290128"}],"author":[{"embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/htrxuan"}],"wp:attachment":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=290128"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=290128"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=290128"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=290128"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=290128"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=290128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}