Временное выключение блога

Метки

Иногда возникает необходимость временно отключить блог. Есть два пути решения этой задачи.

Первый — воспользоваться встроенными в 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/).

Написать ответ

Copyright © 2012 Powered by WordPress