WP_MAINTENANCE() │ WP 3.0.0
Функция WP_MAINTENANCE() останавливает работу сайта и отображает сообщение о том, что он находится в режиме обслуживания (непродолжительном обновлении).
Как это работает
Функция проверяет наличие файла .maintenance
в корне WordPress (рядом с папкой wp-admin
). Этот файл содержит глобальную PHP-переменную $upgrading
, в которой записано значение временной метки Unix, например, 1374363082
, обозначающей время создания файла.
Если файл существует и значение переменной $upgrading
не превышает 10 минут от текущего времени, при переходе на любой раздел сайта WordPress будет показывать сообщение о его временной недоступности.
По умолчанию эта функция используется во время обновлений ядра WordPress или плагинов. Также вы можете использовать ее в других случаях, например, когда нужно приостановить доступ к сайту во время "живого" обновления кода, чтобы избежать случайного выполнения кода при переходе посетителя.
Максимальное время работы в режиме обслуживания — 10 минут.
Функция запускается на очень раннем этапе загрузки WordPress, до постоянной переменной SHORTINIT.
Если время вышло, но глобальная переменная $upgrading
задана в файле .maintenance
, то в административной панели WordPress появляется сообщение:
Автоматическое обновление WordPress не было завершено - пожалуйста, попробуйте выполнить обновление еще раз.
Это связано с тем, что время в переменной проверяется относительно времени в базе данных, когда WordPress был обновлён.
Изменение текста сообщения о обслуживании
Вы можете заменить текст по умолчанию. Для этого нужно создать файл maintenance.php
в директории wp-content
. В этом файле вы должны описать страницу с сообщением, следуя всем правилам HTML.
Для проверки, находитесь ли вы в обновленном режиме, используйте функцию wp_is_maintenance_mode()
.
Важное замечание: эта функция предназначена только для внутреннего использования в ядре WordPress. Не рекомендуется использовать эту функцию в вашем коде.
Возврат значения
Функция ничего не возвращает и просто отображает текст сообщения, останавливая выполнение скрипта (сайта).
Использование
Чтобы активировать режим обслуживания, вызовите функцию:
wp_maintenance();
Примеры использования
1. Перевод сайта в режим обслуживания (обновления, разработка)
Когда вы обновляете код на сайте, рекомендуется включать режим обслуживания (блокировать сайт на время обновления), чтобы неожиданные визиты пользователей не мешали процессу обновления файлов или базы данных.
Чтобы включить режим обслуживания, выполните одно из следующих действий:
Вариант 1:
Создайте файл .maintenance
в корне сайта (в директории, где находится папка wp-admin
), с следующим содержимым:
<?php
// Временная метка UNIX, после которой
// через + 10 минут сайт выйдет из режима обслуживания.
$upgrading = 1652995051; // time();
Вариант 2:
Создайте пустой файл ABSPATH . '.maintenance'
, и на раннем этапе, например, в файле wp-config.php
, укажите глобальную переменную $upgrading
:
// Временная метка UNIX, после которой + 10 минут,
// сайт выйдет из режима обслуживания.
$GLOBALS['upgrading'] = 1652995051; // time();
Готово! Обновите страницу и увидите сооб��ение о техническом обслуживании:
Сайт временно закрыт на техническое обслуживание. Вернитесь через минуту.
2. Изменение текста сообщения о техническом обслуживании
Создайте файл /wp-content/maintenance.php
со следующим кодом:
<?php
wp_load_translations_early();
$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' );
header( 'Retry-After: 600' );
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"<?php if ( is_rtl() ) echo ' dir="rtl"'; ?>>