てくてくあるく

WordPress の テーマ とか プラグイン に ついて 勉強しています

WordPress では アップデート 作業中に
メンテナンスモードに入ります

その時に 表示されるのが メンテナンス ページ

これも カスタマイズ できるので してみました!!

データベース接続確立のエラー ページ の カスタマイズ
https://tekuaru.jack-russell.jp/2015/03/14/18/

また メンテナンスページが表示されたら 自分宛てに
メールを送るようになっていますので
書き換えて 使ってみてください

書き換える内容は

$diff_fime
アラートメールが アクセスのたびに送られないように
前回の時間から 60(秒) × 5(分) 過ぎていれば メールを 送る 設定値です
$set_mail = array(
‘to’ => ‘[email protected]’,
‘header’ => ‘From: ‘ . ‘WordPress ‘ . PHP_EOL .
‘BCC: ‘ . ‘[email protected]’,
‘subject’ => ‘WP DB ERROR : ‘ . $_SERVER[‘SERVER_NAME’],
‘body’ => ‘データベース接続確立エラーページが表示されました。’ . PHP_EOL . PHP_EOL .
‘データベースサーバーが動作中か確認してください。’ . PHP_EOL . PHP_EOL .
‘アクセス元URL : ‘ . ( empty( $_SERVER[‘HTTPS’] ) ? ‘http://’ : ‘https://’ ) . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’],
);
‘to’ は 送り先
‘header’ は 送り元 や CC BCC 等
‘subject’ は 件名
‘body’ は 本文
と なっています

maintenance.php という 名前で
wp-content の 中に ファイルを 入れると動くように なります

<?php
  header( 'HTTP/1.1 503 Service Unavailable' );
  header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' );
  header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
  header( 'Cache-Control: no-cache, must-revalidate, max-age=0' );
  header( 'Pragma: no-cache' );
  header( 'Content-Type: text/html; charset=utf-8' );
?><!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="format-detection" content="telephone=no,address=no,email=no">
  
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
  <script src="//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
  <script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
  
  <title>Service Maintenance</title>
  
  <meta name='robots' content='noindex,follow' />
</head>
<?php
  
  $diff_fime = 60 * 5;
  $file_dir  = $_SERVER['DOCUMENT_ROOT'].'/resources/logs/maintenance.txt';
  
  $last_time = file( $file_dir, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
  
  if ( (int)array_pop( $last_time ) + $diff_fime < time() ) {
    
    file_put_contents( $file_dir, PHP_EOL . time(), FILE_APPEND | LOCK_EX);
    
    $set_mail = array(
      'to'      => '[email protected]',
      'header'  => 'From: ' . 'WordPress <wordpress@' . $_SERVER['SERVER_NAME'] . '>' . PHP_EOL .
                   'BCC: ' . '[email protected]',
      'subject' => 'WP DB ERROR : ' . $_SERVER['SERVER_NAME'],
      'body'    => 'メンテナンスページが表示されました。' . PHP_EOL . PHP_EOL .
                   'メンテナンスが正しく終了したか確認してください。' . PHP_EOL . PHP_EOL .
                   'アクセス元URL : ' . ( empty( $_SERVER['HTTPS'] ) ? 'http://' : 'https://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
    );
    mb_language( 'ja' );
    mb_internal_encoding( 'UTF-8' );
    mb_send_mail( $set_mail['to'], $set_mail['subject'], $set_mail['body'], $set_mail['header'] );
    
  }
  
?>
<body class="container">
  
  <div class="jumbotron" style="margin-top: 30px;">
    
    <h1>Service Maintenance</h1>
    
    <h2>ただいまサイトのメンテナンス中です</h2>
    
    <br><br>
    
    <p class="lead">しばらく待ってから、再度お試しいただけますようお願い致します。</p>
    
  </div><!-- /.jumbotron -->
  
</body>

<style>
/* ここに スタイルを 書きます */
</style>

<script>
/* ここに JSを 書きます */
</script>

</html>

Related Article

カスタム投稿 や カスタムタクソノミー を 簡単に利用する

詳細へ »

WordPress の CSS JS を 非同期 で 読み込む

詳細へ »

Theme Customization API て 意外と簡単だった!!

詳細へ »