wp_maintenance() WP 3.0
Прекращает работу сайта и выводит сообщение о технических работах (сайт в режиме разработки).
Ищет файл .maintenance
в корне WordPress (рядом с папкой wp-admin, обычно это корень сайта). Этот файл содержит переменную $upgrading
, с данными, когда он был создан. Если файл был создан меньше 10 минут назад, WP выведет сообщение о техническом обслуживании сайта. Время в $upgrading указывается в формате unix (1374363082).
Обычно этот функционал используется во время обновления сайта. Но его можно «прикрутить» к другим случаям, когда нужно чтобы сайт находился в недоступном для просмотра режиме. Например при «живом» обновлении кода, чтобы код случайно не был запущен визитом посетителя.
Текст заглушки по умолчанию можно заменить. Для этого нужно создать файл maintenance.php
в директории wp-content. В этом файле нужно описать страницу-заглушку по всем правилам HTML.
Функция срабатывает на очень ранней стадии загрузки WordPress, до константы SHORTINIT.
Хуков нет.
Возвращает
Выводит на экран текст заглушки и останавливает работу скрипта (сайта).
Использование
wp_maintenance();
Примеры
#1. Переводим сайт в режим разработки
Создадим файл .maintenance в корне сайта (где установлен WordPress, каталог где находится папка wp-admin) и напишем в нем код:
<?php $upgrading = 1422567883; // 1422567883 - метка времени UNIX по истечению которого и еще 10 минут, // сайт выйдет из режима разработки. // Переменную $upgrading ($GLOBALS['upgrading']) можно указать // не только тут, а где-либо еще, т.к. она глобальная. // Но делать это нужно на ранней стадии, например в файле wp-config.php
Перезагружаем сайт и видим сообщение о техническом обслуживании:
Сайт ненадолго закрыт на техническое обслуживание. Зайдите через минуту.
#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' ); // большинство функций WP не работают ?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"<?php if ( is_rtl() ) echo ' dir="rtl"'; ?>> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Техническое обслуживание</title> </head> <body> <div style="max-width:800px; margin:50px auto; text-align:center;"> <h1>Сайт находится на техническом обслуживании, работа будет восстановлена через несколько минут.</h1> <h2>Извините за неудобства.</h2> </div> </body> </html>
При обновлении сайта, наше сообщение о недоступности сайта будет изменено и мы увидим такой текст:
Заметки
Если время истекло, но глобальная переменная $upgrading указан в .maintenance, то в админ-панели WP появляется сообщение:
An automated WordPress update has failed to complete - please attempt the update again now.
Видимо связано это с тем, что время в переменной проверяется с временем в БД, когда WP обновился...
Список изменений
С версии 3.0.0 | Введена. |