WordPressサイトをメンテナンスモード(一時的に非表示)にする方法

,

WordPressで作成したWebサイトをリニューアルするときや改修の際にメンテナンス中である旨をユーザーに表示し通常をWebサイトを閲覧出来ないようにするメンテナンスモードにすると便利です。

メンテナンスモードにすることで改修中の画面を見せないで作業ができ、改修途中の画面にアクセスすることにより起きる可能性のある不具合をある程度防ぐことができます。

メンテナンスモードにするにはプラグインを使う方法functions.phpにプログラムを記述する方法の2種類があります。

前者の方法はメンテナンスモードを解除するにはプログラムをコメントアウトする必要があるので、頻繁にコードを弄っている方なら良いのですが、それ以外の方は毎回コメントアウトするのは手間なので後者の方法をお勧めします。

「現在メンテナンス中のため、しばらくの間ご利用いただけません。」というメッセージが表示されるトラブルに関してはWordPress標準のメンテナンスモードについてなので、WordPressのメンテンナンスモードを解除する方法を御覧ください。

プラグイン「WP Maintenance Mode」を使う方法

プラグイン「WP Maintenance Mode」を使う方法はインストールし、有効化するだけでメンテナンスモードにできるので、手軽です。

またメンテナンスモード時に表示されるメッセージもダッシュボード上で変更できるので、より詳細にメンテナンス状況を伝えたい時に便利です。

「WP Maintenance Mode」をインストールする

WordPressのダッシュボードで、「プラグイン」 – 「新規追加」 を開きます。

”WP Maintenance Mode” を検索し、インストール・有効化します。

「WP Maintenance Mode」でメンテナンスモードにする

「設定」 – [WP Maintenance Mode] – [一般] タブを開き、「ステータス」を「有効化 に変更し、「設定を保存] します。

表示を確認する

WordPressにログインしていないブラウザシークレットウィンドウでメンテナンスモードの表示を確認します。

WordPressをログアウトして表示を確認しても良いですが、再度設定をし直す時に面倒なので、上記の方法を推奨します。

完了

意図したとおりの表示になっていれば完了です。

もしメッセージを変更したい場合は「設定」 – [WP Maintenance Mode] – [デザイン] タブを開き、「テキスト」を変更してください。

プラグインを使わないで実装する方法

プラグインをあまりインストールしたくない場合やメンテナンスモードの有効・無効を切り替えるにはfunctions.phpを都度書き換える必要があるので、普段からfunctions.phpを触っている方におすすめしたい方法です。

functions.phpにコードを追加する

functions.phpにご紹介するコードを追加することで、メンテナンスモードに切り替えることができます。

function theme_maintenance_mode() {
    if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) {
        wp_die('メンテナンス中です。しばらくお待ちください。','メンテナンス中');
    }
}
add_action('get_header', 'theme_maintenance_mode');

3行目のwp_dieという記述はWordPress標準のエラーメッセージの画面を呼び出す関数です。この関数に表示させたいメッセージを記述して、実行すると、ただちにWordPressの処理を停止させエラー画面に指定したメッセージが表示されます。

wp_die('メンテナンス中です。しばらくお待ちください。','メンテナンス中');

メンテナンス中です。しばらくお待ちください。の部分が画面に表示されるメッセージでメンテナンス中の部分が<title>として出力される部分です。

どんなときにメンテナンスモードの画面を表示させたいかで使い分けると良いと思います。

テーマの編集権限を持っていない場合にメンテナンスモードを表示

  • WordPressにログインしていない または ログインしていてもテーマの編集権限(edit_themes)を持っていないならメンテナンスモードを表示
  • WordPressにログインしている人は通常のWebサイトを表示

edit_themesというのはテーマを編集できる権限のことで、通常の設定であれば、「特権管理者」「管理者」が持っている権限です。

function theme_maintenance_mode() {
    if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) {
        wp_die('メンテナンス中です。しばらくお待ちください。','メンテナンス中');
    }
}
add_action('get_header', 'theme_maintenance_mode');

WordPressにログインしていない場合にメンテナンスモードを表示

  • WordPressにログインしていない人はメンテナンスモードを表示
  • WordPressにログインしている人は通常のWebサイトを表示

個人的にはこっちのほうが理解しやすいのでよく使う方法です。

function theme_maintenance_mode() {
    if ( !current_user_can( 'edit_themes' ) ) {
        wp_die('メンテナンス中です。しばらくお待ちください。','メンテナンス中');
    }
}
add_action('get_header', 'theme_maintenance_mode');

表示を確認する

WordPressにログインしていないブラウザシークレットウィンドウでメンテナンスモードの表示を確認します。

WordPressをログアウトして表示を確認しても良いですが、再度設定をし直す時に面倒なので、上記の方法を推奨します。

完了

必ずログアウトしてちゃんとメンテナンスモードになっているか確認してください。