Freezes existing post and taxonomy slugs unless explicitly unlocked.
Tested up to: 7.0 Stable tag: 2.0.3 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html
Preserves established public WordPress routes and provides an explicit, audited migration workflow for necessary corrections.
This is a small WordPress maintenance plugin built for a specific operational problem. It stays focused so the behavior is easy to understand, verify, and keep enabled.
Example: "Protect this site from the maintenance issue this plugin handles." - Install the plugin, verify the expected behavior, and let it keep doing that one job.
In practice, the useful path is simple:
- install and activate the plugin
- let it establish Canonical Route Contracts for public content
- audit contracts against observed WordPress routes
- use preview plus explicit URL Migration only when a public URL must change
The human's job is to decide whether the behavior fits the site. The plugin's job is to apply that behavior consistently.
Most small WordPress maintenance problems get handled manually or with broad plugins that do more than needed.
This plugin is different because it keeps a narrow scope:
- one clear purpose
- predictable behavior
- normal WordPress installation and update flow
- public source and release history
That changes the experience from:
Remember to handle this manually every time
to:
Install the focused plugin and verify the result
- the issue depends on manual attention
- behavior can drift between maintenance runs
- fixes are easy to forget when work is repetitive
- the site has a focused plugin for the job
- behavior is consistent between maintenance runs
- releases and source are easy to inspect
This is a good fit for:
- WordPress site owners with the specific maintenance problem this plugin solves
- agencies maintaining many WordPress sites
- operators who prefer focused plugins over broad toolkits
- teams that want public source and release notes before installing a plugin
Start with the public plugin page:
If you are new to the plugin, use this order:
- Read the plugin page
- Download the latest release
- Install it on WordPress
- Verify the expected behavior
- Keep it active if the behavior matches the site
- Freezes established post/page slugs and page hierarchy on every ordinary update path
- Freezes established taxonomy slugs and hierarchy
- Locks permalink structure, category base and tag base against ordinary changes
- Applies the same invariant to wp-admin, REST, MCP, imports, WP-CLI and plugin writes
- Exposes route audit, migration preview and explicit confirmed migration abilities
- Creates permanent Rank Math redirects, verifies results and records bounded audit evidence
- Does not lock links inside post content
- Does not lock post meta values
- Supports temporary allow constants when you intentionally need to rename slugs
- Added fail-closed migration finalization so route-specific adapters can remove self-redirect conflicts or force a full rollback.
- Fixed Rank Math redirect creation to use its required active status and exact-source structure while retaining rollback on failure.
- Added explicit dangerous-action confirmation fields to the post and taxonomy migration schemas for strict MCP compatibility.
- Added Canonical Route Contracts and stable public routes across every ordinary writer.
- Added hierarchy and global permalink-driver protection.
- Added audited, confirmation-gated post/page and taxonomy URL migrations with descendant previews, permanent redirects and rollback.
- Removed automatic wp-admin and constant-based bypasses.
- Fixed manual editing: authorized wp-admin/editor requests can now intentionally change post and term slugs
- Programmatic writes without a verified admin/editor context remain locked unless explicitly allowed
- Docs: expanded the WordPress-standard
readme.txtso the published ZIP now includes fuller behavior, installation, use-case, and Devenia link sections
- Clarified behavior: existing slugs are frozen across update paths unless explicitly unlocked
- Moved slug guards to late filter priority to prevent downstream filter overrides
- Documentation now explicitly states that post-content URLs are not locked
- Scope clarified and enforced as slug-only protection
- Removed content URL, metadata URL, and option/permalink guards
- Keeps post and taxonomy slug locks in place for programmatic updates
- Hardened lock scope to deny URL mutations by default across content, meta/custom fields, term URL drivers, and URL settings
- Removed REST/header-based manual allowance from the URL lock path to prevent API bypasses
- Kept non-URL content edits allowed to preserve URL-only scope
- Hardened REST/manual detection by requiring a wp-admin referer in addition to REST nonce
- Added URL-diff locking for
post_contentandpost_excerptto block programmatic link changes
- Readme tag cleanup (WordPress.org limit)
- Allow manual bulk edits via wp-admin without triggering URL locks
- Block programmatic changes to slugs, parent pages, taxonomies, and permalink settings
- Initial release
PRs welcome. Keep changes focused on the plugin's stated WordPress maintenance behavior.
GPL-2.0+
Devenia - We've been doing SEO and web development since 1993.
If this plugin helps solve a real WordPress maintenance problem, please:
- star the repo
- share it with people running WordPress sites
- point them to the plugin page so they can see what it does
Why do it?
Because practical WordPress maintenance tools are better when they are easy to find, easy to understand, and easy to verify before use.