← All releases

wp-content/plugins/halyard/halyard.php

Halyard

Folders for the media library that are a taxonomy, not a rewritten upload path.

== Description ==

Media folder plugins that move files on disk break every URL you have already published, and they break it silently, months later, when someone reorganises. Halyard stores folders as a hierarchical taxonomy and never touches the uploads directory.

Because it is a taxonomy, everything else works: WP-CLI, the REST API, bulk edit, and any plugin that queries attachments. Uninstalling leaves your files exactly where they always were, with some unused terms.

Drag-and-drop in the grid view, keyboard-reachable in the list view, and a folder filter in the block editor’s media modal — which is where you are when you actually need it.

== Screenshots ==

Numbered the way they ship in /assets/. Click any one to see it full width.

== Installation ==

  • Install and activate the plugin.
  • Create folders in the sidebar of Media → Library.
  • Drag files onto a folder, or use Bulk Actions in list view.

Existing files land in Unfiled. Nothing is moved or renamed, ever.

== Frequently asked questions ==

Do the folders appear in the upload path?

No, and that is deliberate. The path stays /uploads/2026/04/ so published URLs keep working forever.

Can I restrict folders by role?

Yes, per folder. It hides them from the library UI; it is organisation, not security.

Multisite?

Folders are per site. A network-wide shared library is a different plugin with different trade-offs.

== Changelog ==

= 3.2.1 =

  • Fixed: the folder filter was missing from the block editor’s media modal when the modal opened from a gallery block.

= 3.2.0 =

  • Keyboard drag alternative in list view: select, then Move to folder from Bulk Actions.

= 3.0.0 =

  • Folders converted from a custom table to a taxonomy. Existing folders are migrated on activation.