{"id":396404,"date":"2026-11-05T16:36:32","date_gmt":"2026-11-05T16:36:32","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pavel-silinskii-maintenance-mode\/"},"modified":"2026-11-05T16:36:18","modified_gmt":"2026-11-05T16:36:18","slug":"pavel-silinskii-maintenance-mode","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/pavel-silinskii-maintenance-mode\/","author":23556326,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"5.9","requires_php":"8.0","requires_plugins":null,"header_name":"Pavel Silinskii Maintenance Mode","header_author":"Pavel Silinskii","header_description":"Maintenance mode built for deployments. Toggle it from WP-CLI in your deploy script with a safety timeout; visitors get a branded page with 503 + Retry-After while admins and bypass-link holders keep using the site.","assets_banners_color":"","last_updated":"2026-11-05 16:36:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/pavelsilinskiiwork\/wp-maintenance-mode","header_author_uri":"https:\/\/profiles.wordpress.org\/pavelsilinskii\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":36,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"pavelsilinskii","date":"2026-11-05 16:36:18","revision":3786377}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3786370,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[14908,16271,732,1281,4574],"plugin_category":[52],"plugin_contributors":[279784],"plugin_business_model":[],"class_list":["post-396404","plugin","type-plugin","status-publish","hentry","plugin_tags-14908","plugin_tags-deployment","plugin_tags-maintenance","plugin_tags-maintenance-mode","plugin_tags-wp-cli","plugin_category-performance","plugin_contributors-pavelsilinskii","plugin_committers-pavelsilinskii"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/pavel-silinskii-maintenance-mode\/assets\/icon-256x256.png?rev=3786370","icon_2x":"https:\/\/ps.w.org\/pavel-silinskii-maintenance-mode\/assets\/icon-256x256.png?rev=3786370","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Pavel Silinskii Maintenance Mode is built for developers and agencies who deploy WordPress sites from scripts and CI\/CD pipelines.<\/p>\n\n<p>Wrap your deploy in two commands:<\/p>\n\n<pre><code>wp psmm on --for=15m\n# git pull, composer install, wp core update-db ...\nwp psmm off\n<\/code><\/pre>\n\n<p>If the deploy script fails halfway, the site comes back by itself when the timeout ends \u2014 no more sites left in maintenance overnight.<\/p>\n\n<p>Why not core <code>wp maintenance-mode<\/code>? Core's mode locks out everyone, administrators included, shows a plain \"Briefly unavailable\" message, and has a fixed 10-minute window. This plugin:<\/p>\n\n<ul>\n<li>Serves a branded page with HTTP 503 and a Retry-After header matching your timeout<\/li>\n<li>Keeps the site available to administrators, chosen roles, whitelisted IPs and bypass-link holders, so you can check the deploy before visitors do<\/li>\n<li>Lets you choose the timeout per deploy: 90s, 15m, 2h, 1h30m<\/li>\n<li>Never blocks wp-admin, login, the REST API, AJAX, cron or WP-CLI itself<\/li>\n<\/ul>\n\n<p>WP-CLI commands:<\/p>\n\n<ul>\n<li><code>wp psmm on [--for=&lt;duration&gt;]<\/code> \u2014 enable, optionally with an automatic timeout<\/li>\n<li><code>wp psmm off<\/code> \u2014 disable<\/li>\n<li><code>wp psmm status [--format=table|json|yaml]<\/code> \u2014 state, end time and bypass link<\/li>\n<li><code>wp psmm is-active<\/code> \u2014 exit code 0 when active, 1 otherwise, for use in scripts<\/li>\n<\/ul>\n\n<p>Also works without the command line, from Settings \u2192 Maintenance Mode:<\/p>\n\n<ul>\n<li>Expected end date with a live countdown and optional auto-disable<\/li>\n<li>Customizable title, message, logo, background and text colors<\/li>\n<li>Secret bypass link for clients and testers (valid for 7 days, revocable)<\/li>\n<li>Preview button and a red \"Maintenance Mode: ON\" admin bar indicator<\/li>\n<li>Theme override via psmm-maintenance.php<\/li>\n<li>No external scripts \u2014 no CDN, no tracking<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload plugin files to \/wp-content\/plugins\/pavel-silinskii-maintenance-mode\/<\/li>\n<li>Activate through the Plugins screen.<\/li>\n<li>Go to Settings \u2192 Maintenance Mode to customize the page.<\/li>\n<li>Enable maintenance mode there, or run <code>wp psmm on --for=15m<\/code> from your deploy script.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20happens%20if%20my%20deploy%20script%20fails%20before%20%60wp%20psmm%20off%60%3F\"><h3>What happens if my deploy script fails before `wp psmm off`?<\/h3><\/dt>\n<dd><p>With <code>--for<\/code>, maintenance mode turns off by itself when the timeout ends. Without it, the mode stays on until you turn it off.<\/p><\/dd>\n<dt id=\"will%20maintenance%20mode%20hurt%20my%20seo%3F\"><h3>Will maintenance mode hurt my SEO?<\/h3><\/dt>\n<dd><p>No. The page is served with HTTP status 503 and a Retry-After header, which tells search engines the outage is temporary and when to come back.<\/p><\/dd>\n<dt id=\"i%20enabled%20maintenance%20mode%20but%20i%20still%20see%20my%20site.\"><h3>I enabled maintenance mode but I still see my site.<\/h3><\/dt>\n<dd><p>Administrators always see the live site. Use the \"Preview maintenance page\" button or open the site in a private window.<\/p><\/dd>\n<dt id=\"visitors%20still%20see%20the%20live%20site.\"><h3>Visitors still see the live site.<\/h3><\/dt>\n<dd><p>A page cache (plugin, server or CDN) may be serving cached pages. Purge the cache after enabling maintenance mode.<\/p><\/dd>\n<dt id=\"how%20do%20i%20give%20a%20client%20access%20without%20an%20account%3F\"><h3>How do I give a client access without an account?<\/h3><\/dt>\n<dd><p>Copy the secret bypass link from the Access section, or run <code>wp psmm status<\/code>. Clear the key and save to revoke all shared links.<\/p><\/dd>\n<dt id=\"can%20i%20use%20my%20own%20template%3F\"><h3>Can I use my own template?<\/h3><\/dt>\n<dd><p>Yes. Copy templates\/maintenance.php to your theme as psmm-maintenance.php, or use the psmm_template filter.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Maintenance mode for deploy scripts: toggle it from WP-CLI with a safety timeout. Branded 503 page, admins keep working.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/396404","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=396404"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pavelsilinskii"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=396404"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=396404"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=396404"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=396404"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=396404"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=396404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}