URL Change Lockdown

Freeze existing post and taxonomy slugs unless you explicitly unlock them. This plugin is for keeping established URLs stable during imports, syncs, MCP runs, and other scripted updates.

Download the latest release | View source on GitHub

Current scope is slug protection only. It does not lock links inside post content and it does not lock post meta values.


What Problem It Solves

A lot of WordPress breakage starts with a quiet slug change. A script, import, migration, or AI workflow updates a post slug or taxonomy term, and suddenly old URLs stop matching what search engines, bookmarks, or internal systems expect.

Broken URLs
Old links in search results, emails, and documentation stop resolving cleanly.

Unexpected taxonomy churn
Categories and terms drift when sync jobs or bulk tools rewrite them.

Automation collisions
Scripts and MCP tools can edit safely, but slug changes should require an explicit decision.


What It Actually Locks

Post slugs
Existing post_name values stay frozen on update unless you allow the change.

Taxonomy term slugs
Existing term slugs are also frozen unless you allow the change.

Nothing else
It does not lock content links, post meta, or unrelated editor changes.


When It Helps

  • Bulk imports that should update content but not rename established URLs.
  • Staging-to-production workflows where slug drift would create avoidable SEO damage.
  • MCP and automation workflows where assistants should be able to edit safely without silent permalink churn.
  • Sites where multiple plugins or custom jobs touch posts and terms programmatically.

How to Allow an Intentional Rename

If you really do want to change slugs, add a temporary allow constant in wp-config.php, make the change, then remove the constant.

define('URL_LOCKDOWN_ALLOW', true);
// Or, for WP-CLI only:
define('URL_LOCKDOWN_ALLOW_CLI', true);

This keeps the default behavior strict while still letting you perform planned rename operations on purpose.


Current Release Status

  • Latest release: 1.4.2
  • Requires WordPress: 5.9+
  • Requires PHP: 7.4+
  • License: GPL v2 or later

Frequently Asked Questions

Does it still allow manual slug changes in wp-admin?

No. Existing post and taxonomy slugs stay frozen unless an allow constant is set. That is the current documented behavior.

Does it lock post content links too?

No. The plugin is slug-only now. It does not police links inside post content.

Does it lock post meta or custom fields?

No. Post meta values are outside its scope.

What if I need to rename something on purpose?

Use URL_LOCKDOWN_ALLOW or URL_LOCKDOWN_ALLOW_CLI, perform the change, and remove the constant again.

Why keep the scope this narrow?

Because the useful hardening target is slug stability. Locking unrelated content fields creates noise and gets in the way of normal editing.

See more Devenia plugins