Немногим ранее мы рассмотрели что такое Maintenance mode, а также способы закрытия сайта на техническое обслуживание.
В том материале я рекомендовал отказаться от использования плагинов для решения данной задачи. Способ закрытия сайта с помощью хука в файле functions.php
все же имеет пару недостатков:
- нет возможности полностью кастомизировать отображаемую страницу-заглушку
- требует правки кода, в то время как решения в виде плагинов позволяют добиться результата в 1 клик
В продолжении темы, сегодня я расскажу как отображать собственную (кастомную) страницу-заглушку в режиме Maintenance mode, а также добавить соответствующий пункт в настройки движка. В результате, мы сможем включать режим технического обслуживания из административной панели.
Создание файла maintenance.php
Этап первый. Создание файла, в котором и будет размещен наш собственный контент. Для этого в директории /wp-content
создадим файл с названием maintenance.php
. Не забывайте о кодировке файла.
С первым пунктом на этом все.
Верстка страницы
Этап второй. На этом пункте не будем останавливаться подробно. Нам требуется создать HTML-шаблон, который и будет в дальнейшем выводиться. Приведу пример кода.
Листинг HTML:
<!DOCTYPE html> <html> <head> <!-- пропишем заголовок окна --> <title>На сайте ведутся технические работы</title> <!-- не забываем о кодировке --> <meta charset="utf-8" /> <!-- подключаем стили --> <link rel="stylesheet" type="text/css" href="/style.css"> </head> <body> <div class="block"> <div class="template"> <img class="bender" src="link-to-img.jpg"> <h1>На сайте ведутся технические работы</h1> <p>На текущий момент наш интернет-ресурс недоступен. Матрица не сломалась. Мы просто решили сделать ее немного лучше.</p> <p>Обновите страницу через пару минут. Все будет работать.</p> </div> </div> </div> </body> </html> <?php die(); ?>
Листинг CSS:
body{ font-family: Verdana, Arial, sans-serif; font-size: 20px; color : #000; } h1{ font-size: 30px; } p{ font-size: 22px; padding: 0 0 0 10px; margin:0; } .template{ padding: 0 0 10px 50px; text-align: center; } .block{ padding-right: 15px; padding-left: 15px; } .bender{ max-width: 400px; }
Данный код необходимо вставить в вышеупомянутый файл maintenance.php
.
Результат моего HTML-макета выглядит примерно так.
Рекомендую проявить творческую составляющую на данном этапе. Проявили? Тогда идем дальше.
Добавление пункта меню в раздел «Настройки»
// Регистрируем опцию для включения Maintenance mode class custom_general_settings { function custom_general_settings() { add_filter( 'admin_init' , array( &$this , 'custom_register_fields' ) ); } function custom_register_fields() { register_setting( 'general', 'custom_under_maintenance', 'esc_attr' ); add_settings_field('mk_custom_under_maintenance', '<legend class="custom_under_maintenance"><span>'.__('Режим технического обслуживания' , 'custom_under_maintenance' ).'</legend>' , array(&$this, 'clinto_fields_html') , 'general' ); } function clinto_fields_html() { $value = get_option( 'custom_under_maintenance'); $checked = ($value=='yes') ? 'checked="checked"' : ''; echo '<label for="custom_under_maintenance"><input type="hidden" name="custom_under_maintenance" value="no" /><input id="custom_under_maintenance" type="checkbox" '.$checked.' name="custom_under_maintenance" value="yes" />Закрыть сайт</label>'; } } $custom_general_settings = new custom_general_settings(); //
Данный код необходимо добавить в файл functions.php
.
В результате мы получим новую опцию:
Расположена она в разделе «Настройки», подменю «Общие».
Завершаюший этап
Итак, нам осталось добавить в наш многострадальный functions.php
код, который позволит нашему пункту меню включать/выключать режим тех. обслуживания.
//закрытие сайта на тех. обслуживание start $value = get_option( 'custom_under_maintenance');//обработка нашей опции if ($value=='yes' && !current_user_can('manage_options')): add_action( 'wp_loaded', function() { global $pagenow; if($pagenow !== 'wp-login.php' && ! is_user_logged_in() ) { header( 'HTTP/1.1 Service Unavailable', true, 503 ); header( 'Content-Type: text/html; charset=utf-8' ); if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) { require_once( WP_CONTENT_DIR . '/maintenance.php' ); } die(); } }); endif; //закрытие сайта на тех. обслуживание end
Собственно, вот и все. Произвольный HTML-макет написан. В настройки WordPress добавлена соответствующая галочка и ее обработчик. А значит, что все недостатки метода полностью устранены.
При желании вы можете написать обработчик, который позволит не только включать Maintenance mode, но и выбирать один из нескольких шаблонов. Для эстетов напомню, что все приводимые хуки можно оформлять в виде собственных плагинов, за счет чего файл functions.php
останется не только девственно чистым, но и совершенно непорочным.
kuzmenov.ru
Причины создания страницы заглушки
Итак, стоит выделить две причины, по которым каждому уважающему себя ресурсу следует завести себе страницу-заглушку, работающую в перечисленных ситуациях:
- Желание не распугать посетителей сайта во время его временного нерабочего состояния. Пользователям не нравится попадать на сайты с «ошибкой», не зная причин и времени простоя, они просто покинут ресурс в поисках более надежного сайта.
- Рекламация будущего ресурса, который еще не опубликован. Такие страницы появляются в сети как вестники будущего сайта, с указанием его тематики, краткого обзора и прогноза, ссылками на группы в социальных сетях и контактными данными.
И в первом, и во втором случаях страница заглушка должна иметь приятный, ненавязчивый и привлекательный внешний вид. Привлекательности способствует фон, соответствующий тематике, имеющий уникальное изображение, цвета, используемые компанией, организация шрифтового и графического пространства. Словом, это должна быть полноценная страница-визитка, несущая информационную нагрузку для реципиента.
Информация на ней должна быть хорошо организована, лаконична и понятна. Если возможно указать время начала работы сайта, следует это сделать, чтобы посетители знали, когда им вернуться на портал.
Нельзя сказать, что страницы-заглушки необходимы только порталам с большим количеством посетителей, таких как игровые ресурсы, файлообменники, платежные и банковские системы. Страница-заглушка не помешает репутации любого, даже начинающего сайта.
babosik.ru
u0431u043eu043bu044cu0448u0435 u043cu0438u043bu043bu0438u043eu043du0430 u0440u0430u0437″,»u041au043eu043cu0430u043du0434u0430 u043au0430u043bu0438u0444u043eu0440u043du0438u0439u0441u043au043eu0433u043e u043fu0440u043eu0435u043au0442u0430
u043eu043au0430u0437u0430u043bu0430u0441u044c u043du0435u0439u0440u043eu043du043du043eu0439 u0441u0435u0442u044cu044e»,»u0413u043eu043bu043eu0441u043eu0432u043eu0439 u043fu043eu043cu043eu0449u043du0438u043a u0432u044bu043au0443u043fu0438u043b
u043au043eu043cu043fu0430u043du0438u044e-u0441u043eu0437u0434u0430u0442u0435u043bu044f»,»u041du0435u0439u0440u043eu043du043du0430u044f u0441u0435u0442u044c u043.
u043fu0440u0438 u043fu043eu043cu043eu0449u0438 u043cu0435u043cu043eu0432″,»u0425u0430u043au0435u0440u044b u0441u043cu043eu0433u043bu0438 u043eu0431u043eu0439u0442u0438 u0434u0432u0443u0445u0444u0430u043au0442u043eu0440u043du0443u044e
u0430u0432u0442u043eu0440u0438u0437u0430u0446u0438u044e u0441 u043fu043eu043cu043eu0449u044cu044e u0443u0433u043eu0432u043eu0440u043eu0432″]
vc.ru
Как это работает?
Работает, как оказалось, все очень просто: при заходе на сайт происходит перенаправление на заранее созданную страницу-заглушку, а для того чтобы зайти Вам на сайт и не попасть на заглушку, необходимо добавить свой IP-адрес в исключения. Это еще один довод в пользу того, что у web-разработчика должен быть свой, выделенный IP-адрес для работы. Если у Вас его нет, то самое подходящее время это исправить.
Рабочий пример
Давайте по пунктам.
- Узнаем свой IP-адрес. Допустим у нас 178.74.102.96.
- Создаем саму страницу заглушку. У нас, к примеру, это maintenance.html, которая размещена в корне сайта.
- В файле .htaccess добавляем вот такой вот код:
<IfModule mod_rewrite.c> # заглушка RewriteCond %{REQUEST_URI} !/maintenance.html$ RewriteCond %{REMOTE_ADDR} !^178.74.102.96 RewriteRule $ /maintenance.html [R=302,L] </IfModule>
Теперь для всех посетителей вашего сайта, которые зайдут на него, будет выводиться страница-заглушка, а для Вас сайт все также будет доступен.
P.S. Лично у меня, на боевом сервере этот код закомментирован и ждет своего часа. Чего и Вам советую.
adminway.ru