Иногда возникает необходимость временно отключить блог. Есть два пути решения этой задачи.
Первый — воспользоваться встроенными в WordPress средствами. Для начала необходимо создать файл с названием .maintenance в корне блога (в той папке, где расположен файл wp-settings.php). Имя файла должно начинаться с точки. В unix-е это означает скрытый файл. В этом файле необходимо написать одну строку:
<?php $upgrading = time (); ?>В результате, вместо блога будет отображаться страница с информацией о «техническом обслуживании» сайта, пока не будет удален файл .maintenance .
В файле wp-settings.php выполняется две проверки, должен ли блог быть переведен в режим технического обслуживания. Во-первых, проверяется, что файл .maintenance существует. Во-вторых, сравнивается текущее время и время, определенное в переменной $upgrading, если разница менее 10 минут блог переключается в режим обслуживания. Приведенный выше код всегда даст результат меньше, чем 10 минут (time () — time () == 0).
Если вы хотите выключить блог на определенный период времени, замените time () на число:
<?php $upgrading = 1234567890; ?>, где 1234567890 надо заменить на время, когда режим технического обслуживания должен быть выключен (минус 10 минут) в формате unix timestamp (кол-во секунд прошедших с 00:00:00 1-го января 1970 по Гринвичу
). Чтобы не заморачиваться переводом времени в этот "не человеский формат, можно написать так:
<?php $upgrading = mktime (hour,minute,second,month,day,year ); ?>
, где вместо hour,minute,second,month,day,year следует подставить интересующие числа. Обратите внимание, что если вы указываете определенное время в файле .maintenance , и не удалите после наступления указанного момента сам файл, пользователи будут видеть блог без ограничений, однако в панели администратора вы увидите уведомление: «обновление WordPress не удалось завершить — пожалуйста, попробуйте еще раз». Удалите файл .maintenance и сообщение исчезнет.
Чтобы оформить сообщение о проведении технических работ в нужном стиле. необходимо создать и отредактировать файл wp-content/maintenance.php. Можно воспользоваться этим шаблоном:
<?php
$protocol = $_SERVER["SERVER_PROTOCOL"];
if ( 'HTTP/1.1' != $protocol && '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>Закрыто на ремонт. Зайдите через год.</h1>
</body>
</html>
<?php die(); ?>Ну, и, наконец, чтобы сохранить для себя и других авторов возможность работать с админ.панелью, осталось внести последнее изменение. Содержимое файла .maintenance необходимо заменить на :
<?php
function is_user_logged_in() {
$loggedin = false;
foreach ( (array) $_COOKIE as $cookie => $value ) {
if ( stristr($cookie, 'wordpress_logged_in_') )
$loggedin = true;
}
return $loggedin;
}
if ( ! stristr($_SERVER['REQUEST_URI'], '/wp-admin') && ! stristr($_SERVER['REQUEST_URI'], '/wp-login.php') && ! is_user_logged_in() )
$upgrading = time();
else
$upgrading = 0;
?>с учетом желаемого времени, которое следует установить так, как обсуждалось выше.
Второй путь, вероятно более простой — использовать плагин Maintenance Mode (http://wordpress.org/extend/plugins/maintenance-mode/) или WP Maintenance Mode (http://wordpress.org/extend/plugins/wp-maintenance-mode/).




