Встроенный в WordPress Maintenance Mode

Привет. Сегодня я хочу рассказать о использовании Maintenance Mode, т.е. заглушки блога на то время, пока ты проводишь над ним всяческие ритуалы. До недавнего времени для этого я использовал одноименный плагин Maintenance Mode, а сегодня обнаружил такую функцию в движке WordPress.

Для начала объясню принцип ее работы. WP-Settings проверяет существование двух файлов — .maintenance (в корне) и maintenance.php (в wp-content), затем он проверяет разницу во времени, а точнее «текущая дата» минус «заданная дата» и разница должна быть меньше 600 секунд. Если разница правдивая, то он выводит заглушку из maintenance.php, а если нет отображает контент блога.

Нынешнюю дату wordpress берет из

<?
echo time()
?>

которая лежит в wp-settings, а вычитаемую дату из .maintenance. Все даты в UNIX формате.

Есть два способа закрыть ваш блог:
1. До ручного открытия, т.е. до удаления вами файла .maintenance.
2. Автоматически. Вы задаете время, когда вы хотите чтобы сайт открылся и он откроется.

Ну а далее как это сделать.

Итак, для того, чтобы ее использовать необходимо:

1) Создать в папке wp-content файл maintenance.php который содержит в себе следующую запись:

<?php
$protocol = $_SERVER["SERVER_PROTOCOL"];
if ( 'HTTP/1.1' != $protocol &amp;amp;&amp;amp; 'HTTP/1.0' != $protocol )
        $protocol = 'HTTP/1.0';
header( "$protocol 503 Service Unavailable", true, 503 );
header( 'Content-Type: text/html; charset=utf-8' );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>
<body>
<h1>Briefly unavailable for scheduled maintenance. Check back in a minute.</h1>

</body>
</html>
<?php die(); ?>

2)
2.1 Если вы хотите использовать ручной режим, то создаете в корневой директории (это там где папки wp-content, wp-includes и т.п.) файл, задаете ему имя .maintenance, а носить в себе он должен запись

<?php $upgrading = time(); ?>

После того, как .maintenance и maintenance.php с вышеописанными записями окажутся на своих местах,
при запросе блог выведет дефолтную надпись Briefly unavailable for scheduled maintenance. Check back in a minute.
Чтобы открыть блог достаточно удалить или переименовать файл .maintenance

2.2 Если вы хотите чтобы блог открылся сам в заданное вами время, то подобно пункту 2.1 вы создаете в корне файл .maintenance, но вносите в него запись

<?php $upgrading = 1266344040; ?>

где 1266344040 - это дата в UNIX формате. Важно обратить внимание, что расчетная дата при конвертации должна быть задана на 10 минут раньше,
т.е. если вам необходимо открыть блог 20 февраля 2010 года в 21:35, то конвертировать вам надо дату 20 февраля 2010 года в 21:25. Если вы все указали верно, подобно п.2.1 получите сообщение заглушки.

3) Конвертация даты производится так и в таком формате:

<?
echo strtotime(str_replace(".","-","16 february 2010 21:14:00"))."<br />";
?>

4) Внешний вид страницы заглушки можно изменять в файле wp-content/maintenance.php

Tags: ,

Комментарий отобразится на текущей странице