WordPressのコア機能として「メンテナンスモード」というものがあります。WordPressを更新中、ユーザーにメンテナンス中と表示されるものです。
この記事ではWordPressのメンテナンスモードのしくみと、メンテナンスモードを手動で設定する方法をまとめています。
WordPressメンテナンスモードとは
WordPressのメンテナンスモードは、WordPressコアファイル、プラグイン、テーマを更新中、訪れるユーザーに対して「メンテナンス中」であることを表示する機能です。
現在メンテナンス中のため、しばらくの間ご利用いただけません。
と表示されます。
メンテナンスモードはWordPressのデフォルトの機能で以下のような流れで発生します。
- WordPress・プラグイン・テーマのアップデートを開始するとWordPressはメンテナンスモードに入ります。
- WordPressのルートディレクトリに
.maintenance
ファイルが生成されます。 .maintenance
が存在する間はWordPressはメンテナンスモードの画面になります。- アップデートが終了すると、メンテナンスモードが解除され、
.maintenance
は自動的に削除されます。
WordPress メンテナンスモードのままになってしまった時の解除方法
WordPressをアップデートしている最中に、画面を閉じてしまったりすると、「現在メンテナンス中のため、しばらくの間ご利用いただけません」というメッセージのまま、固まってしまって元に戻らなくなってしまうことがあります。
これを解決するには、WordPressのルートディレクトリ(wp-config.phpがある場所)にある.maintenance
というファイルを削除する必要があります。これでメンテナンスモードは解除されます。
.maintenance
ファイルを削除するには、FTPまたはファイルマネージャーでサーバーにアクセスして削除します。
手動でメンテナンスモードにする方法
WordPressを自分で更新したり、リニューアルする際にメンテナンスモードにしておきたい時があります。
手動でメンテナンスモードを有効にする方法と、プラグインを使用する方法を説明します。
- .maintenanceを手動で設置する
- functions.phpに設定する
- プラグインでメンテナンスモードにする
- .htaccessで自作ページを用意してメンテナンス中にする
.maintenanceを手動で設置する
.maintenanceファイルを自分で作成して設置することでメンテナンスモードにすることができます。
step
1.maintenanceファイルを作成します
WordPressのルートディレクトリに.maintenance
という名前でファイルを作成します。
step
2コードを記述します
ファイルには以下のコードを記述します。
<?php $upgrading = time(); ?>
step
3メンテナンス中
.maintenanceファイルが存在する間、WordPressはメンテナンスモードになります。
step
3終了したらファイルを削除
メンテナンスが完了したら、このファイルを削除するか中身を空にすることで、メンテナンスモードが解除されます。
この方法は、手動でファイル設置・削除をする手間がありますが、プラグインなし、ファイルを設置するだけでメンテナンスモードにすることができます。
functions.phpに設定する
テーマ内のfunctions.phpにメンテナンスモード用の関数を設定します。
function custom_maintenance_mode() {
if ( !current_user_can( 'manage_options' ) ) {
wp_die( 'メンテナンス中です。ご迷惑をおかけしますが、しばらくお待ちください。' );
}
}
add_action( 'get_header', 'custom_maintenance_mode' );
上記のコードでは、WordPressの管理者権限を持っていないユーザーにはメンテナンス中のメッセージを表示します。
プラグインでメンテナンスモードにする
3つ目はプラグインを使ってメンテナンス中にします。メンテナンスモードにするプラグインは「WP Maintenance Mode」が有名ですが、2023年に名前が変更になっています。
プラグインページで、WP Maintenance Modeで検索しても見つかりません。
現在は「LightStart – Maintenance Mode, Coming Soon and Landing Page Builder」になっています。
プラグインを有効化してからの手順が変わっているのでちょっと戸惑いますが、プラグイン自体の機能はほぼWP Maintenance Modeと同じようです。
ただし、LightStartプラグインをインストールすると、
Image optimization service by Optimole、
Otter – Page Builder Blocks & Extensions for Gutenberg
などのプラグインが追加でインストールされる場合があります。
LightStartのプラグインを有効化してからの設定手順は以下のようになります。
step
1テンプレートの選択
Comming Soon、Maintenance Mode、Landing Pageの3つからテンプレートを選択します。テンプレートを使わないことも可能です。※最初にテンプレートを選択すると、メンテナンスモードが有効な状態になります。
メルマガ登録を促すページが表示されますが、一番下にある「I'll Skip for now」を選択するしてスキップできます。
「Go to settings」ボタンをクリックすると、メンテナンスページの移動します。
step
2メンテナンスページの編集
メンテナンス中に表示される固定ページが作成されるので、編集します。
step
3メンテナンスモードの設定
- 「一般」タブ:
メンテナンスモードの有効・無効が制御できます。この部分以外はとくに設定しなくても問題ありません。 - 「デザイン」タブ:
Coming Soon, Maintenance mode, Landing Pageのテザイン済みのテンプレートを選択できます。 - 「モジュール」タブ:
メールアドレスを登録した人の統計やGoogle Analytics解析用の設定ができます。 - 「ボットを管理」:
マーケティング用のボットを管理できます。
ログアウトするかゲストモードで確認すると、メンテナンス中になっていると思います。基本的には、テンプレートを選択するかメンテナンス中ページを作成して、ステータスを有効化にすればメンテナンスモードになります。
以前はシンプルで使いやすかったですが、プラグインの開発者が変わってからマーケティング要素が強くなってしまい、使い勝手は微妙な感じです。
.htaccessで自作ページを用意してメンテナンス中にする
4つ目は、.htaccessでメンテナンス中に設定します。WordPerssに依存しない方法なので、WordPress以外のサイト、静的サイトでも利用できます。
用意するのは以下の2つのファイルです。
- maintenance.html(ファイル名は任意)
- .htaccess
maintenance.html
メンテナンス中のメッセージのためのHTMLです。自由に記述してください。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>メンテナンス中</title>
</head>
<body>
<h1>只今メンテナンス中です。</h1>
<p>申し訳ありませんが、サイトは現在メンテナンス中です。ご迷惑をおかけして申し訳ありません。</p>
</body>
</html>
.htaccess
.htaccessには以下の内容を記述します。既に.htaccessがある場合は、上書きせずに追記します。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000$ #自分のIPアドレスを設定
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.html [R=302,L]
</IfModule>
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000$ | メンテナンス画面を表示しないIPアドレスを指定します。 |
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] | リクエストURLでmaintenance.htmlを除外します。 |
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] | 画像ファイル(拡張子が jpg、jpeg、png、gif)は除外します。 |
RewriteRule .* /maintenance.html [R=302,L] | 302は一時的なリダイレクトです。 |
まとめ
この記事では、WordPressのメンテナンスモードとは?どのような状況で設定されるかと、メンテナンスモードを手動で設定する4つの方法ついて解説しました。
これらの手順を正確に実行することで、ウェブサイトやブログのアップデートや修理作業中に、ユーザーにメンテナンス中であることを告知し作業を円滑に進めることができます。