xpay✦ Commerce
Directory
WooCommerce plugins
Limbus Maintenance Page & Shop Pause
Limbus Maintenance Page & Shop Pause
Maintenance mode, coming soon and under construction page with a correct 503, plus a one-switch shop pause for WooCommerce.
5.0
(1 ratings)Will this break my store?
What the WordPress.org registry says about keeping Limbus Maintenance Page & Shop Pause running.
Tested to 7.1.1
Tested against the WordPress branch in use today.5 days ago
7.4
Your host must be running at least this version.6.2
1
A single maintainer. Worth knowing if the plugin is load-bearing for your store.Maintenance & trust
Scored on how Limbus Maintenance Page & Shop Pause is looked after — not on how many stores run it.
Maintenance
35 / 35WordPress compatibility
20 / 20Support responsiveness
Not enough dataMerchant satisfaction
10 / 15Listing transparency
7 / 10Ratings
5.0
1 ratingThis plugin has two switches. One closes the site behind a maintenance page. One stops ordering in a WooCommerce shop while the catalogue stays open.
One page, four uses. The same page serves as a maintenance page during an update, a coming soon page before launch, an under construction notice while you build, and a private screen while you work on a staging copy. You set a title and a message.
Maintenance mode. A single on/off switch that saves as soon as you flip it. Visitors get the page; everything else on the screen is optional.
Shop pause. For holidays and stock takes. The catalogue stays browsable and indexed, ordering stops: nobody can add to cart or reach checkout, while customers who already ordered still reach their confirmation and pay-for-order pages. Set a start and an end date and the shop reopens on its own.
How it works
- HTTP 503 with a
Retry-Afterheader. A 503 tells search engines the outage is temporary and that your existing pages should stay indexed. When you set an end time,Retry-Afteris calculated from it. Nonoindexheader is ever sent. - The maintenance page is self-contained. One HTML document of about 2 KB with its styles inline: no external stylesheet, no web font, no script, no tracker. It renders even when the rest of the site cannot.
- Fonts already on the visitor’s device. Choose a system font, sans-serif, serif, or serif headings with sans-serif text; no font file is requested. If your theme declares its typography in theme.json, a Match my theme option appears as well. Classic themes keep their fonts in a stylesheet, which cannot be read from a plugin, so the option is hidden rather than shown doing nothing.
- PHP notices are kept out of the page. With
WP_DEBUGon, a notice or deprecation raised anywhere during the request would otherwise be printed into the response. The 503 response is the document and nothing else. Your error log still receives everything. - The shop pause filters purchasability instead of hiding buttons, which is what the classic templates, the Cart and Checkout blocks and the Store API all read. HPOS and Cart/Checkout Blocks compatibility are declared.
- Page caches are emptied when you flip a switch. WP Rocket, LiteSpeed, W3 Total Cache, WP Super Cache, Cache Enabler, Autoptimize, SiteGround Optimizer, Hummingbird and Breeze store finished HTML and serve it from a drop-in that runs before plugins load, so the cache is cleared automatically — and only when a switch or a schedule changes, so editing a message does not flush a large site.
- Schedules are evaluated on each request rather than through WP-Cron, which needs traffic to fire.
- Text colour is derived from the background using WCAG relative luminance, and the contrast ratio is shown live if you set the colour yourself.
What it does not do
- No admin notice outside its own settings screen: no review prompt, no banner, no countdown.
- No telemetry, no analytics, no “help us improve” prompt.
- No email of any kind.
- No external service, account, API key or quota. Everything runs on your own server.
- No arbitrary CSS, JavaScript or PHP is stored or executed. Developers can replace the page entirely through a filter, in their own code.
- No front-end CSS or JavaScript file. The shop notice uses WooCommerce’s own notice class and inherits your theme’s styling.
- No extra database query: one autoloaded option, already read by the time the plugin runs.
- No table, no transient, no cron event. Deleting the plugin removes that single option, unless you ask it to keep your settings.
- Nothing is registered on the front end while both modes are off.
Using it
- While a mode is running, a red marker sits in the toolbar on every screen — Maintenance page active, Shop paused, or both — linking to the switch that turns it off.
- With WooCommerce active, a Shop pause entry appears in the WooCommerce menu and opens the shop section of the settings.
- A live preview sits beside the form and updates as you change the title, message, logo, colours or fonts. It is rendered by the plugin itself, so it matches what visitors get.
- Both switches save on their own and report what happened, including which page cache was emptied. The remaining fields use the Save button.
- A shareable preview link lets someone without an account see the site during maintenance. Opening it sets a cookie that lasts a month, and you can regenerate the link to revoke it.
- An allowlist keeps chosen pages public. Search your own pages, posts and products by name and add them in a click, or type paths by hand:
/blog/*keeps a whole section open,/keeps just the home page. - Choose who still sees the site: administrators, administrators and editors, or anyone logged in. The login page always stays reachable.
- Deactivating the plugin turns both modes off and keeps your settings.
- Settings export and import as plain JSON, for reusing the same setup across sites.
For developers
limbus_maintenance_page_shop_pause_bypass_maintenance (bool) — let a request through.
limbus_maintenance_page_shop_pause_maintenance_html (string|null) — replace the maintenance page entirely with your own markup.
limbus_maintenance_page_shop_pause_retry_after (int) — change the `Retry-After` value.
limbus_maintenance_page_shop_pause_purge_cache (action) — fired after the known page caches are cleared, for a server-level cache, Varnish or a CDN.
limbus_maintenance_page_shop_pause_clean_output (bool) — return false to let PHP notices through onto the maintenance page while debugging it.
Languages
The plugin is fully internationalised and follows each user’s own WordPress language, so two people on the same site can see it in two different languages. Right-to-left locales get a right-to-left layout, in the settings screen and on the maintenance page. Translations are managed on translate.wordpress.org and contributions are welcome there.
Privacy and external services
This plugin does not connect to any external service. It sends no data anywhere, sets no third-party cookie, loads no remote asset and collects no analytics. The only cookie it sets is on your own domain, when you open your own preview link, and it stores a hash rather than the key itself.
Credits
Developed and maintained by Stefanos Athanassopoulos at Limbus Studio, a French studio whose day job is looking after WordPress sites. It is the tool we wanted for our own maintenance windows and our clients’ WooCommerce holiday closures.
Visitors get HTTP 503 with a Retry-After header, which tells search engines the outage is temporary and that your existing pages should stay indexed. If you set an end time, Retry-After is calculated from it. No noindex is sent.
Yes, it is the same switch. Set your title and message, turn it on, and the page stays up until you turn it off. Before a launch, when nothing is indexed yet, the 503 costs you nothing; on a site that is already live, it is what protects your rankings during an update.
Almost always a page cache. WP Rocket, LiteSpeed and the others store finished HTML and serve it from a drop-in that runs before any plugin loads, so visitors keep getting the stored pages. The plugin empties the caches it can detect each time you switch a mode, and the settings screen names the one it found. If your host or CDN adds its own cache — Varnish, nginx, Cloudflare — clear that one too, or hook onto limbus_maintenance_page_shop_pause_purge_cache to do it automatically.
A quick way to tell the difference: open a URL that cannot be cached, such as yoursite.com/a-page-that-does-not-exist/. If that returns the maintenance page, the plugin is working and only the cache is in the way.
Yes. You stay logged in and see the site normally. You can widen that to editors, or to anyone with an account.
Copy the preview link from the settings page and send it. Opening it sets a cookie that lasts a month. Generate a new link at any time to revoke the old one.
Not from the settings screen: the directory does not allow plugins to store arbitrary CSS. Developers can return their own markup from the limbus_maintenance_page_shop_pause_maintenance_html filter, in a theme or a site-specific plugin.
Products become non-purchasable while the pause is on, and WooCommerce removes non-purchasable items from carts when it validates them. For a planned closure this is the intended behaviour. Carts filled after the shop reopens are unaffected.
Yes. Order confirmation and pay-for-order pages stay reachable throughout, so anyone who ordered before the pause is not left stranded.
Yes. The shop pause filters purchasability rather than hiding buttons, which the classic templates, the blocks and the Store API all read. HPOS and Cart/Checkout Blocks compatibility are both declared.
No. Maintenance mode works on any WordPress site. The shop section only does anything when WooCommerce is active, and its settings can be filled in beforehand either way.
Deactivate the plugin from Plugins, which turns both modes off and keeps your settings. If you cannot reach wp-admin at all, rename the limbus-maintenance-page-shop-pause folder over FTP or SFTP. The login page is never blocked, so this should not come up.
Its single option is deleted and nothing is left behind. Tick Keep my settings if I delete the plugin first if you plan to reinstall.
Plugin details
Tags on WordPress.org
