2026年9月21日

2026年9月21日

WordPressのメンテナンスモードを設定する方法|プラグイン・自作コード・WP-CLIの使い分け

WordPress のメンテナンスモードは、訪問者には「メンテナンス中」のページを見せ、管理者だけが通常どおりサイトを操作できる状態にするものです。手軽なのはプラグイン、プラグインを増やしたくなければ数十行の mu-plugin、短時間の作業なら WP-CLI のコマンドが使えます。この記事では3つの方法の使い分けと設定手順、検索エンジンに正しく「一時停止中」と伝える方法、解除し忘れやキャッシュで起こるトラブルの防ぎ方を説明します。

メンテナンスモードが必要な場面

メンテナンスモードは、訪問者に作業途中の状態を見せたくないときに使います。

  • テーマの変更やデザインの大幅な修正
  • プラグインの入れ替えや、データの一括変換
  • サーバー移転やドメイン変更の切り替え作業
  • EC サイトで、作業中に注文が入ると困るとき

数分で終わる小さな修正なら、ステージング環境で作業してから本番に反映するほうが、サイトを止めずに済みます。メンテナンスモードは「本番を止めるしかない作業」のための手段と考えてください。

方法の選び方

方法 向いている場面 管理者の閲覧
プラグイン 見た目を整えたい、管理画面で切り替えたい できる
mu-plugin(自作コード) プラグインを増やしたくない、仕組みを把握したい できる
WP-CLI / .maintenance 短時間の作業、コマンドで切り替えたい できない

WP-CLI の方法は、WordPress のコアの更新処理と同じ仕組みを使うため、管理者を含めて全員がメンテナンス表示になります。管理画面で作業したいなら、プラグインか mu-plugin を選びます。

方法1: プラグインで設定する

メンテナンスモード用のプラグインには、LightStart(旧名 WP Maintenance Mode)、SeedProd の Coming Soon・メンテナンスモード用プラグイン、WebFactory の Maintenance などがあります(2026年10月現在)。名称や無料版でできる範囲は変わることがあるため、公式ディレクトリで最終更新日と対応バージョンを確認してから選んでください。

多くのプラグインに共通する設定は次のとおりです。

  • 有効・無効の切り替え: 作業の開始と終了で切り替えます。
  • 表示する内容: 見出し、作業内容、終了予定時刻。連絡先や SNS へのリンクを載せると、訪問者の不安を減らせます。
  • 閲覧を許可するユーザー: 標準では管理者だけが通常の画面を見られる設定のものが多いです。確認作業を手伝う人がいるなら、その人の権限グループを許可します。
  • ステータスコード: 「503」を返す設定があれば有効にします。理由は後の「検索エンジンへの影響」で説明します。

「メンテナンスモード」と「Coming Soon(近日公開)モード」を切り替えられるプラグインもあります。公開前の新しいサイトに使う Coming Soon と、公開済みのサイトを一時的に止めるメンテナンスでは、検索エンジンへの伝え方が違います。公開済みのサイトならメンテナンスモードを選んでください。

方法2: mu-plugin で自作する

mu-plugin(Must Use プラグイン)は、wp-content/mu-plugins/ フォルダに置いた PHP ファイルが自動で読み込まれる仕組みです。管理画面から無効化できないので、ファイルを置けば有効、削除またはリネームすれば解除、と分かりやすく管理できます。フォルダが無ければ作成してください。

wp-content/mu-plugins/simple-maintenance.php として保存する例です。

<?php
/**
 * Plugin Name: Simple Maintenance Mode
 * Description: 管理者以外に 503 とメンテナンス表示を返します。このファイルを削除またはリネームすると解除されます。
 */

defined( 'ABSPATH' ) || exit;

add_action( 'template_redirect', function () {
	// ログイン中の管理者は通常どおり閲覧できる
	if ( current_user_can( 'manage_options' ) ) {
		return;
	}

	// 再訪の目安(秒)。終了予定に合わせて調整する
	header( 'Retry-After: 3600' );

	wp_die(
		'<h1>' . esc_html__( 'ただいまメンテナンス中です', 'simple-maintenance' ) . '</h1>' .
		'<p>' . esc_html__( '作業が終わり次第、再開します。しばらくしてから再度アクセスしてください。', 'simple-maintenance' ) . '</p>',
		esc_html__( 'メンテナンス中', 'simple-maintenance' ),
		array( 'response' => 503 )
	);
} );

コードのポイントを説明します。

  • **template_redirect フック**: サイトの表側のページを表示する直前に動くフックです。管理画面(wp-admin)やログイン画面(wp-login.php)では動かないため、メンテナンス中でもログインして作業できます。
  • **current_user_can( 'manage_options' )**: 設定を変更できる権限、つまり通常は管理者だけが素通りできます。編集者にも見せたい場合は edit_posts などに変えます。
  • **wp_die() の response**: 503 を指定すると、そのステータスコードでページを返します。キャッシュさせないためのヘッダーも合わせて送られます。

このコードは REST API への応答は止めません。ヘッドレス構成や外部サービスとの連携で REST API を使っている場合は、作業内容によって別の対策が必要です。作業が終わったら、ファイルを削除するか simple-maintenance.php.off のように拡張子を変えれば解除されます。

方法3: WP-CLI と .maintenance ファイル

WordPress は、コアやプラグインの更新中に、インストール先のフォルダへ .maintenance というファイルを作り、全員に「メンテナンスのため一時的に利用できません」という表示を出します。WP-CLI ではこの仕組みをコマンドで切り替えられます。

wp maintenance-mode activate
wp maintenance-mode status
wp maintenance-mode deactivate

この方法は管理者も締め出されるうえ、現在のコアの実装では、作られてから10分を過ぎた .maintenance は無視されます。数分で終わるコマンド中心の作業向けと考えてください。表示される文言は、wp-content/maintenance.php というファイルを用意すると差し替えられます。

検索エンジンへの影響

メンテナンス中のページを通常のページ(ステータスコード 200)として返すと、検索エンジンが「メンテナンス中」という内容をそのページの本文として扱うおそれがあります。503(一時的に利用できない)を返せば、「一時的な停止なので、後でまた来てほしい」と伝えられます。Retry-After ヘッダーは、再訪の目安を伝えるものです。

ただし、503 が何日も続くと、Google はページを検索結果から外し始めることがあると案内しています。メンテナンスはできるだけ短く、長期間止めるなら作業の進め方そのものを見直してください。

ステータスコードは、ログアウトした状態でコマンドから確認できます。

curl -I https://example.com/

1行目に 503 と表示されれば設定どおりです。

キャッシュと解除し忘れに注意する

メンテナンスモードでよく起こるトラブルは次の3つです。

  • キャッシュで通常のページが表示され続ける: ページキャッシュや CDN が、メンテナンス前のページを訪問者に返すことがあります。開始時にキャッシュを削除してください。
  • 解除後もメンテナンス画面が出る: 逆に、メンテナンス画面がキャッシュされて残ることがあります。解除したら、キャッシュをもう一度削除し、ログアウトした状態やスマートフォンで表示を確認します。
  • **更新の失敗で .maintenance が残る**: 更新中に通信が切れるなどすると、ファイルが残って画面が戻らないことがあります。FTP やファイルマネージャーで .maintenance を削除すれば戻ります。ドットで始まるファイルは、隠しファイルの表示を有効にしないと見えないことがあります。

作業の開始前には、バックアップを取っておくこと、終了予定時刻を決めてメンテナンス画面に書くことも忘れないでください。

まとめ

  • メンテナンスモードは、本番を止めるしかない作業のときに使う
  • 管理画面で作業するなら、プラグインか mu-plugin で管理者だけ閲覧できるようにする
  • WP-CLI の方法は管理者も締め出され、短時間の作業向け
  • 公開済みサイトでは 503 と Retry-After を返し、停止は短くする
  • 開始時と解除時にキャッシュを削除し、ログアウトした状態で表示を確認する

お気軽にご相談ください

お見積りへ お問い合わせへ
▲