ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

WordPress, メンテナンス中ページをカスタマイズする

wordpress image
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。

WordPress5.3からメンテナンス中のページのカスタマイズがかんたんになりました。

理由は『wp_die()の機能強化』です。これによって、コードが直感的でHTMLも見やすくなりました。

優先度は低いですが、あまり見られないページに力を入れてるとサイトのクオリティが高いと思われます。

(見た目だけのカッコつけだけど。)

DBエラーページ(db-error.php)、PHPエラーページ(php-error.php)の作り方と、ほぼほぼ同じです。

(だから書いてある内容もほぼ同じ。)

WP5.3から、wp_die()で指定するパラメータのメッセージ(第1パラメータ)にHTMLタグが使えるようになりました。

(ようはHTML文が挿入できる。)

これで、ドロップインで作成するメンテナンス中の専用ページがスッキリと余計なことを考えずに作成できます。

HTMLは<body>部だけでいいです。

(CSSスタイル、JavaScriptも挿入可)

作成するサンプル

まずはWP5.3以降のデフォルトページとカスタマイズしたページをお見せします。

大したことはしていません。HTMLとCSSを数分で書いただけです。それでそれなりのものができます。

ということで実際に作ってみましょう。

maintenance.phpのフォーマット

メンテナンスページは/wp-content/maintenance.phpです。説明はあとにしてまずはフォーマットから。

<?php
if ( ! function_exists( 'wp_die' ) ) {
    require_once( ABSPATH . WPINC . '/functions.php' );
}
wp_load_translations_early();
header( 'Retry-After: 600' );
ob_start();
?>
<!-- CSSファイル -->
<link rel="stylesheet" href="https://sample.com/sample.css" >
<style type='text/css'>
  // ここにインラインスタイルを書く。
</style>

// ここにHTMLを書く。

<!-- JS -->
<script></script>
<?php
wp_die( ob_get_clean(), __( 'Maintenance' ), 503 );

このかたちでページを作成します。

PHPコードはなんでこうなるのか?

PHPコードは

maintenance.phpが無いとき、どうやってデフォルトページを作っているか?

を考えて、その部分のWordPressのコードからパクってきました。

(『maintenance.php』でWPコードを検索。)

/wp-includes/load.php, wp_maintenance()
if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
    require_once WP_CONTENT_DIR . '/maintenance.php';
    die();
}

require_once ABSPATH . WPINC . '/functions.php';
wp_load_translations_early();

header( 'Retry-After: 600' );

wp_die(
    __( 'Briefly unavailable for scheduled maintenance. Check back in a minute.' ),
    __( 'Maintenance' ),
    503
);

なんでfunctions.phpをrequireするのか?

wp_load_translations_early()を入れる理由は?

HTTPレスポンスヘッダに'Retry-After: 600'を入れる理由は?

なんで503コードなの?

これらのすべての答えは

エンジニア
元ソースと同じにするために流用。

以上です。

補足

不親切なのでちょっとだけ補足すると、503コードは『サービスが利用できない』という意味で、600コードは503と一緒につけるのがルールです。

HTTP通信規約の話は本題ではないのでこのへんで。

functions.phpの中にはwp_die()が定義されています。これがないと使えません。

wp_load_translations_early()は翻訳ファイルを通常より早いタイミングで読み込むもので、WPのコア機能だけで使います。

(テーマやプラグインでは使わない。)

これからも、ドロップインではWordPress本体をカスタマイズしていることが分かります。

WordPress.orgリファレンス

Function - wp_load_translations_early

メンテナンスページのカスタマイズのまとめ

  • maintenance.phpファイルを用意する。
  • wp-includes/load.phpのwp_maintenance()を参考にフォーマット作成。
  • HTML文の部分をカスタマイズ。
  • "***/DocumentRoot/wp-content/"にアップロード。

WP5.2までのカスタマイズはこれよりも作業が必要です。

  • HTTPレスポンスヘッダを詳細に作らないといけない。
  • HTMLを<html>から作らないといけない。
  • wp_die()は使わない。(maintenance.phpファイルの呼び出し元のdie()で終わる。)
前の投稿
WordPress,『現在メンテナンス中のため、しばらくの間ご利用いただけません。』のカスタマイズ
WordPress, データベースのエラーページをカスタマイズする
次の投稿

WordPressの本

post-cta-image

たくさんあるなかで、WordPressの基本が学べる、目的別に学べる本を選びました。

  • WordPressの基本。
  • Webサイト作成から運用まで全体的に学ぶ。
  • かんたんなカスタマイズを学ぶ。
  • 何も分からないところから学ぶ。
  • WordPressからPHPプログラミングを学ぶ。

の5冊です。どうしてもネット上で調べて勉強するのが苦手という人におすすめです。

この内容をモノにすればほかの本は必要ありません。あとは自分の力で、書籍を使わずにインターネット上にある情報だけで学んでいけます。

コメントを残す

*