Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/aryanjasala/axle-read-only-mode/releases/download/v3.0.0/axle-read-only-mode.zip![]()
Axle Read-Only Mode
Read-only mode for migrations and deploys. Visitors still see the site, but nothing can be saved, so no edit, order or comment gets lost in the switch.
When you move a site to a new server, or replace the live database with one from staging, anything saved on the old copy during the move is lost. Maintenance mode hides the whole site. Axle Read-Only Mode keeps it online and makes it read-only until you unfreeze, or until the freeze ends on its own.
[!NOTE] Free and open source under the GPL. No pro version, no upsells, no ads in wp-admin, no tracking. And it stays that way.
Part of Axle by AryanX, a family of plugins for running WordPress sites safely.
Features
- wp-admin still opens, but saves, uploads, settings and plugin changes are refused
- Block editor disables Save and Publish and says why, including for people who already have it open
- REST and XML-RPC writes get
423 Locked. Reads still work - Visitors posting comments, forms, checkouts or sign-ups get a
503withRetry-Afterand your own message - WP-Cron is held back and runs when the freeze ends
- End time, schedule, +30 minutes and +1 hour, and quick freeze from the admin bar
- Blocked attempts listed (who, when, what), and the last ten freezes kept
- Logging in always works, so an admin can always unfreeze
Install
- Download
axle-read-only-mode.zipfrom the latest release. - In WordPress, go to Plugins > Add New Plugin > Upload Plugin, choose the zip and activate it.
Or with WP-CLI:
wp plugin install https://github.com/aryanjasala/axle-read-only-mode/releases/latest/download/axle-read-only-mode.zip --activate
Needs WordPress 6.6+ and PHP 7.4+. To try it first, the Try in WordPress Playground badge opens a throwaway WordPress in your browser with the plugin and some demo content.
Quick look
WP-CLI is never blocked, so a deploy script can wrap the migration:
wp axle-read-only-mode on --minutes=30 --reason="Moving servers"
# ... migrate ...
wp axle-read-only-mode off
If the script dies halfway, the freeze still ends after 30 minutes.
Screenshots
![]() The block editor during a freeze |
Tools > Axle Read-Only Mode during a freeze, with countdown and blocked attempts |
![]() What visitors see when they send a form during a freeze |
Documentation
| Doc | What it covers |
|---|---|
| Reference | Constants, hooks, WP-CLI, what is blocked and what is stored |
| Development | Local setup, commands and tests |
| Contributing | Pull requests, required checks and PR titles |
| Releasing | How merged pull requests become releases |
| Security | Reporting a vulnerability |
| readme.txt | What WordPress.org shows, with the FAQ and changelog |
Project structure
axle-read-only-mode.php plugin header and PSR-4 autoloader
src/
├── Plugin.php creates the services, guards load only while frozen
├── State.php the saved freeze, its timing and messages
├── Freezer.php starts, extends and ends freezes
├── BlockedLog.php what the freeze stopped
├── History.php the last ten freezes
├── Guards/ wp-admin, REST, front-end and cron guards
├── Admin/ freeze screen, notice, admin bar
├── Editor/EditorLock.php locks the block editor through the heartbeat
└── Cli/Command.php wp axle-read-only-mode
assets/ editor lock and countdown scripts
tests/
├── Unit/ PHPUnit
└── e2e/ Playwright specs and the Docker site
.wordpress-org/ screenshots
docs/ reference, development, contributing, releasing
More free plugins
Small plugins that each fill one gap in WordPress, all free with no pro version:
| Plugin | What it does | |
|---|---|---|
| Page Template Usage | See which template every page uses, and fix the pages on a missing template | |
| Staging Guard | Stops staging copies from emailing real people or getting indexed | |
| Category & Tag Trash | A trash for categories, tags and custom terms, with undo and full restore | |
| Restore Blocks from Revisions | Restore a single block from an old revision, not the whole post | |
| Activity Log with Undo | An activity log where every change you can reverse has an Undo button | |
| Agent Governance | Hold risky AI agent calls for approval, preview what they change, and roll back a session | |
| Block Doctor | Scan the whole site for invalid and broken blocks and fix them in bulk, with undo | |
| Block Theme Ops | Find Site Editor changes that override your theme files, see the diff, reset them or send them to Git | |
| Role Right-Sizer | Recommends the smallest role each user needs, from what they actually do | |
| Update Rehearsal | Try plugin, theme, core and PHP updates on a disposable copy of your site in WordPress Playground first | |
| User Session Manager | See every device signed in, sign out one, and limit sessions per role |
License
Copyright Aryan Jasala. Licensed under GPL-2.0-or-later.
Releases
6 releases. Each count is every asset in that release; expand a row for the breakdown.
Active-site estimate ≈20 comes from the v2.0.1 cohort. Method.

