Title: XUmbrella Page Maintenance Controller
Author: Genki Miyagawa
Published: <strong>September 11, 2026</strong>
Last modified: September 11, 2026

---

Search plugins

![](https://ps.w.org/xumbrella-page-maintenance-controller/assets/banner-772x250.
png?rev=3690664)

![](https://ps.w.org/xumbrella-page-maintenance-controller/assets/icon-256x256.png?
rev=3690664)

# XUmbrella Page Maintenance Controller

 By [Genki Miyagawa](https://profiles.wordpress.org/miyagen/)

[Download](https://downloads.wordpress.org/plugin/xumbrella-page-maintenance-controller.1.5.0.zip)

 * [Details](https://wordpress.org/plugins/xumbrella-page-maintenance-controller/#description)
 * [Reviews](https://wordpress.org/plugins/xumbrella-page-maintenance-controller/#reviews)
 *  [Installation](https://wordpress.org/plugins/xumbrella-page-maintenance-controller/#installation)
 * [Development](https://wordpress.org/plugins/xumbrella-page-maintenance-controller/#developers)

 [Support](https://wordpress.org/support/plugin/xumbrella-page-maintenance-controller/)

## Description

This plugin is built for renewing **part** of a live site: you pick the individual
pages that are being reworked, and only those pages go into maintenance. The rest
of the site stays online and fully indexable.

Most maintenance plugins cover the whole site and stop at the HTML front end. That
leaves the pages you are hiding reachable through other public surfaces — the REST
API, the sitemap, RSS feeds, oEmbed, and the site’s own search results and archive
listings. This plugin closes those surfaces for the targeted pages as well, so a
page under maintenance does not resurface somewhere else on the same site.

The second half of the plugin is the review loop. While a page is under maintenance,
you can issue a secret preview link that lets a client open the real page without
a WordPress account, then revoke it when the review is done.

#### Features

 * **Per-page or site-wide scope** — apply maintenance mode to selected pages or
   posts of any public post type, or to the entire site.
 * **Correct 503 responses** — sends `503 Service Unavailable` in place (no redirect)
   with `Retry-After` and noindex headers, so search engines understand the downtime
   is temporary.
 * **Content-leak protection** — helps prevent exposure of targeted pages through
   the public REST API, search endpoint, WordPress’s built-in sitemap, feeds, oEmbed,
   and the site’s own front-end search results and archive listings (see FAQ for
   SEO-plugin sitemaps). This also covers the places WordPress builds without a 
   normal post query: the site-wide comment feed, recent-comment listings, previous/
   next post navigation, and title-based archive lists.
 * **Navigation menu exclusion** — menu entries that point at a targeted page are
   removed from the front end while maintenance is active, together with any sub-
   items nested under them. This covers classic menus and the Navigation block; 
   editors who can manage menus still see everything (see FAQ for hand-written links).
 * **Secret preview links** — issue a token-protected link that lets clients view
   the targeted pages during maintenance without logging in. Tokens are stored hashed,
   verified in constant time, and can be regenerated or revoked at any time.
 * **Lockout prevention** — administrators always bypass the maintenance screen.
   Additional roles can be allowed to bypass it too.
 * **Two screen modes** — a customizable built-in template (heading, body, logo)
   or an existing page reused as the maintenance screen.
 * **Cache-aware** — maintenance and preview responses send no-cache headers and`
   DONOTCACHEPAGE`, which helps prevent caching in compatible cache plugins.
 * **No tracking, no external services** — the plugin makes no outbound requests
   and collects no data.

## Screenshots

[⌊Settings screen: scope, target pages, and bypass roles.⌉⌊Settings screen: scope,
target pages, and bypass roles.⌉[

Settings screen: scope, target pages, and bypass roles.

[⌊Built-in maintenance screen shown to visitors.⌉⌊Built-in maintenance screen shown
to visitors.⌉[

Built-in maintenance screen shown to visitors.

[⌊Secret preview link management.⌉⌊Secret preview link management.⌉[

Secret preview link management.

## Installation

 1. Install and activate the plugin.
 2. Go to Settings  Maintenance Mode.
 3. Choose a scope (specific pages or the entire site) and, for specific pages, select
    the pages or posts to target.
 4. Choose a maintenance screen (the built-in template or an existing page) and enable
    maintenance mode.

## FAQ

### Can I lock myself out?

No. Users with the `manage_options` capability (administrators) always bypass the
maintenance screen, regardless of the role settings.

### What does “Public API Blocking” actually turn off?

Only the 503 response for public REST API requests that reach a targeted page. Turn
it off when a headless front end or an integration has to keep talking to the REST
API while a page is under maintenance.

Excluding targeted pages from REST collections, the search endpoint, sitemaps, feeds,
and front-end listings is not tied to that checkbox — those stay on for as long 
as maintenance is active, so turning the block off never puts a targeted page back
into a listing. What it does allow is a request that already knows the exact post
ID reading the targeted content directly, which is why the setting is marked as 
recommended.

### Does it work with cache plugins?

Maintenance responses are sent with no-cache headers and the `DONOTCACHEPAGE` constant.
For best results, also exclude targeted pages from your cache plugin while maintenance
is active.

### What is the secret preview link?

A URL containing a random token. Anyone who opens it can view the maintenance-targeted
pages without logging in, until you regenerate or revoke the link. The token is 
stored as a hash and removed from the address bar immediately after access.

### Why doesn’t the page list show all of my pages?

The list shows up to 500 items to keep the settings screen fast (adjustable via 
the `pmctl_page_list_limit` filter). Use the search box to find any page beyond 
that limit.

### The page title still appears somewhere on my site. Why?

The plugin removes a targeted page from the places WordPress generates automatically:
query results, listings, search, feeds, the built-in sitemap, the REST API, and 
menu entries that reference the page as a post.

It does not rewrite content you wrote yourself. A hand-typed link, a custom-link
menu item, a button or heading in a template part, or the page title written into
another page’s body are all authored content, and editing them is your decision,
not the plugin’s. Visitors who follow such a link still get the 503 maintenance 
screen and never see the page, but the wording and the URL remain visible until 
you edit them. If hiding every mention matters for a particular page, search your
site for links to it before you enable maintenance.

One structural case is worth knowing about: child pages keep their parent’s slug
in their own address, so a published child of a page under maintenance still carries
the parent slug in its URL, and most themes name the parent in the breadcrumb trail.
Select the child pages as targets too if that matters.

### Does maintenance mode hurt SEO?

Targeted pages return HTTP 503 with a `Retry-After` header, which tells search engines
the outage is temporary. They are also excluded from WordPress’s built-in sitemap,
feeds, and the site’s own front-end search results and archive listings while maintenance
is active. If an SEO plugin (Yoast SEO, Rank Math, All in One SEO, etc.) generates
its own sitemap, it replaces WordPress’s built-in one and is not covered by this
exclusion — exclude the targeted pages there separately if you use one.

### Does it support multisite?

The plugin works on a per-site basis (each site has its own settings), and settings
are migrated per site as each one loads the updated version. Network activation 
and network-wide uninstall are not officially tested; use it on individual sites
within a network.

### Is the plugin available in my language?

The plugin is fully internationalized and its translations are managed on translate.
wordpress.org, so any locale the community translates is delivered automatically.
Contributions are welcome.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“XUmbrella Page Maintenance Controller” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ Genki Miyagawa ](https://profiles.wordpress.org/miyagen/)

“XUmbrella Page Maintenance Controller” has been translated into 1 locale. Thank
you to [the translators](https://translate.wordpress.org/projects/wp-plugins/xumbrella-page-maintenance-controller/contributors)
for their contributions.

[Translate “XUmbrella Page Maintenance Controller” into your language.](https://translate.wordpress.org/projects/wp-plugins/xumbrella-page-maintenance-controller)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/xumbrella-page-maintenance-controller/),
check out the [SVN repository](https://plugins.svn.wordpress.org/xumbrella-page-maintenance-controller/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/xumbrella-page-maintenance-controller/)
by [RSS](https://plugins.trac.wordpress.org/log/xumbrella-page-maintenance-controller/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.5.0

 * First release on WordPress.org. Earlier versions were developed privately and
   were never distributed here.

## Meta

 *  Version **1.5.0**
 *  Last updated **6 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/xumbrella-page-maintenance-controller/)
   and [Japanese](https://ja.wordpress.org/plugins/xumbrella-page-maintenance-controller/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/xumbrella-page-maintenance-controller)
 * Tags
 * [503](https://wordpress.org/plugins/tags/503/)[coming soon](https://wordpress.org/plugins/tags/coming-soon/)
   [maintenance mode](https://wordpress.org/plugins/tags/maintenance-mode/)[maintenance page](https://wordpress.org/plugins/tags/maintenance-page/)
   [under construction](https://wordpress.org/plugins/tags/under-construction/)
 *  [Advanced View](https://wordpress.org/plugins/xumbrella-page-maintenance-controller/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/xumbrella-page-maintenance-controller/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/xumbrella-page-maintenance-controller/reviews/)

## Contributors

 *   [ Genki Miyagawa ](https://profiles.wordpress.org/miyagen/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/xumbrella-page-maintenance-controller/)