WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Получай пассивный доход от сайта

wp_maintenance() WP 3.0

Прекращает работу сайта и выводит сообщение о технических работах (сайт в режиме разработки).

Ищет файл .maintenance в корне WordPress (рядом с папкой wp-admin, обычно это корень сайта). Этот файл содержит переменную $upgrading, с данными, когда он был создан. Если файл был создан меньше 10 минут назад, WP выведет сообщение о техническом обслуживании сайта. Время в $upgrading указывается в формате unix (1374363082).

Обычно этот функционал используется во время обновления сайта. Но его можно «прикрутить» к другим случаям, когда нужно чтобы сайт находился в недоступном для просмотра режиме. Например при «живом» обновлении кода, чтобы код случайно не был запущен визитом посетителя.

Текст заглушки по умолчанию можно заменить. Для этого нужно создать файл maintenance.php в директории wp-content. В этом файле нужно описать страницу-заглушку по всем правилам HTML.

Функция срабатывает на очень ранней стадии загрузки WordPress, до константы SHORTINIT.

Если время истекло, но глобальная переменная $upgrading указана в .maintenance, то в админ-панели WP появляется сообщение:

An automated WordPress update has failed to complete - please attempt the update again now.

maintenetce2

Видимо связано это с тем, что время в переменной проверяется с временем в БД, когда WP обновился.

Работает на основе: wp_is_maintenance_mode()

Хуков нет.

Возвращает

null. Выводит на экран текст заглушки и останавливает работу скрипта (сайта).

Использование

wp_maintenance();

Примеры

#1. Переводим сайт в режим обслуживание (обновления, разработки)

При обновлении кода на сайте, рекомендуется переводить сайт в режим обслуживания (заблокировать на время обновления), чтобы внезапные посещения пользователей не могли повлиять на процесс обновления файлов.

Чтобы включить такой режим нужно:

Вариант 1:

Создать файл .maintenance в корне сайта (каталог где находится папка wp-admin) со следующим кодом:

<?php
// метка времени UNIX по истечению которого + 10 минут, сайт выйдет из режима разработки.
$upgrading = time();

Вариант 2:

Создать пустой файл ABSPATH . '.maintenance' и вручную на раннем этапе, например в файле wp-config.php указать глобальную переменную

// метка времени UNIX по истечению которого + 10 минут, сайт выйдет из режима разработки.
$GLOBALS['upgrading'] = 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' );

// большинство функций 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>

При обновлении сайта, наше сообщение о недоступности сайта будет изменено и мы увидим такой текст:

maintenetce

Список изменений

С версии 3.0.0 Введена.

Код wp_maintenance() WP 5.8

<?php
function wp_maintenance() {
	// Return if maintenance mode is disabled.
	if ( ! wp_is_maintenance_mode() ) {
		return;
	}

	if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
		require_once WP_CONTENT_DIR . '/maintenance.php';
		die();
	}

	require_once ABSPATH . WPINC . '/functions.php';
	wp_load_translations_early();

	header( 'Retry-After: 600' );

	wp_die(
		__( 'Briefly unavailable for scheduled maintenance. Check back in a minute.' ),
		__( 'Maintenance' ),
		503
	);
}

Из раздела: Админ-панель

1 коммент
    Войти