PHPackages                             soderlind/vmfa-editorial-workflow - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. soderlind/vmfa-editorial-workflow

ActiveWordpress-plugin[Authentication &amp; Authorization](/categories/authentication)

soderlind/vmfa-editorial-workflow
=================================

Role-based folder access, move restrictions, and Inbox workflow for Virtual Media Folders.

1.8.0(2mo ago)10[1 PRs](https://github.com/soderlind/vmfa-editorial-workflow/pulls)GPL-2.0-or-laterPHPPHP &gt;=8.3CI passing

Since Jan 25Pushed 2mo agoCompare

[ Source](https://github.com/soderlind/vmfa-editorial-workflow)[ Packagist](https://packagist.org/packages/soderlind/vmfa-editorial-workflow)[ Fund](https://paypal.me/PerSoderlind)[ RSS](/packages/soderlind-vmfa-editorial-workflow/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (14)Versions (31)Used By (0)

Virtual Media Folders – Editorial Workflow
==========================================

[](#virtual-media-folders--editorial-workflow)

Role-based folder access, move restrictions, and Inbox workflow for Virtual Media Folders.

Description
-----------

[](#description)

This add-on extends [Virtual Media Folders](https://wordpress.org/plugins/virtual-media-folders/) with enterprise-grade editorial workflow features:

- **Per-role folder visibility** — Control which folders each role can see
- **Move/assignment restrictions** — Define who can move media into which folders
- **Inbox workflow** — Contributors upload to an inbox; editors triage and move onward
- **Review workflow** — Track items needing review with dedicated admin screen
- **Internationalization** — Fully translatable with Norwegian Bokmål included

Requirements
------------

[](#requirements)

- WordPress 6.8+
- PHP 8.3+
- [Virtual Media Folders](https://wordpress.org/plugins/virtual-media-folders/) plugin

Installation
------------

[](#installation)

1. Download [`vmfa-editorial-workflow.zip`](https://github.com/soderlind/vmfa-editorial-workflow/releases/latest/download/vmfa-editorial-workflow.zip)
2. Upload via `Plugins → Add New → Upload Plugin`
3. Activate via `WordPress Admin → Plugins`

Plugin [updates are handled automatically](https://github.com/soderlind/wordpress-plugin-github-updater#readme) via GitHub. No need to manually download and install updates.

Configuration
-------------

[](#configuration)

### Folder Permissions

[](#folder-permissions)

Navigate to **Media → VMF Settings → Editorial Workflow** to configure:

1. **Permission Matrix** — Set view/move/upload/remove permissions per folder per role
2. **Inbox Mapping** — Assign default upload folders for each role
3. **Approved Folder** — Choose which folder approved items are moved to

#### Supported Roles

[](#supported-roles)

The permission settings automatically include **all roles that have the `upload_files` capability** — not just Editor and Author. This means custom roles are fully supported:

- Custom roles like "Contributor with upload" or "Shop Manager" will appear automatically
- Any role granted the `upload_files` capability via plugins (e.g., Members, User Role Editor) will be configurable
- Administrator is excluded from settings as they always have full access to all folders

To add the `upload_files` capability to a custom role, you can use a role management plugin or run the following WP-CLI command:

```
# Example: Grant 'upload_files' capability to a custom role
wp role create media_contributor "Media Contributor" --clone=subscriber
wp cap add media_contributor upload_files
```

#### Default Permissions

[](#default-permissions)

Out of the box, the plugin applies sensible defaults:

- **Editor** — Full access to all folders by default (can be restricted via settings)
- **Author** — No access by default (must be explicitly granted permissions)
- **Custom roles** — No access by default (must be explicitly granted permissions)

#### Permission Types

[](#permission-types)

PermissionDescription**View**Can see the folder in the sidebar and browse media inside it**Move To**Can drag-and-drop or assign media INTO this folder**Upload To**New uploads from this role can be routed to this folder via Inbox Mapping**Delete**Can delete this folder (system folders are always protected)> **Note:** Moving media from Folder A to Folder B only requires "Move To" permission on Folder B (and "View" on both). Anyone can remove media to Uncategorized.

### Workflow Folders

[](#workflow-folders)

On activation, the plugin creates protected system folders:

- `/Workflow/Needs Review` — Items pending editorial review
- `/Workflow/Approved` — Items that have been approved

These folders cannot be renamed or deleted.

### Review Screen

[](#review-screen)

Access **Media → Review** to:

- View all items needing review
- Bulk approve items (moves to Approved folder)
- Bulk assign items to destination folders
- See notification badge with count of pending items

Development
-----------

[](#development)

See [docs/development.md](docs/development.md) for build instructions, testing, hooks reference, and REST API documentation.

License
-------

[](#license)

GPL-2.0-or-later

###  Health Score

41

—

FairBetter than 89% of packages

Maintenance87

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~4 days

Total

12

Last Release

65d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1649452?v=4)[Per Søderlind](/maintainers/soderlind)[@soderlind](https://github.com/soderlind)

---

Top Contributors

[![soderlind](https://avatars.githubusercontent.com/u/1649452?v=4)](https://github.com/soderlind "soderlind (56 commits)")

---

Tags

editorial-workflowsvirtual-media-folderswordpress-media-librarywordpress-pluginpluginwordpressworkflowmediapermissionsmedia libraryfolderseditorial

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/soderlind-vmfa-editorial-workflow/health.svg)

```
[![Health](https://phpackages.com/badges/soderlind-vmfa-editorial-workflow/health.svg)](https://phpackages.com/packages/soderlind-vmfa-editorial-workflow)
```

###  Alternatives

[dereuromark/cakephp-tinyauth

A CakePHP plugin to handle user authentication and authorization the easy way.

129228.6k10](/packages/dereuromark-cakephp-tinyauth)[silverstripe/contentreview

Flags pages for periodical author review (incl. reporting)

22264.3k4](/packages/silverstripe-contentreview)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
