Чтобы мои посетители не могли увидеть неработающую версию моего сайта во время обслуживания, а также чтобы предупредить их об обновлениях, я хотел бы автоматически перенаправить их на временную страницу обслуживания. Я ищу портативное решение, которое можно использовать на любом сайте, без жесткого кодирования URL.
Зарегистрированные администраторы (или другой пользовательский уровень по выбору) должны получить полный доступ к серверной части и клиентской части. Есть много плагинов, которые предлагают эту функциональность, но я ищу решение только для кода.
maintenance
Новый пользователь
источник
источник
Ответы:
WordPress имеет встроенную функцию для управления режимом обслуживания.
Когда вы обновляете плагин или ядро WordPress из панели инструментов WP, WordPress входит в режим обслуживания: он пытается загрузить файл с именем, который
maintenance.php
находится в папке содержимого (обычно/wp-content
), и, если этого файла нет, WP показывает сообщение по умолчанию.Я предлагаю вам использовать этот файл, таким образом, вы будете последовательны для обслуживания, запускаемого вручную, и для обслуживания, управляемого WordPress.
Как
Прежде всего создайте
maintenance.php
файл и поместите туда содержимое, которое вы хотите. Для стилизации я предлагаю вам поместить CSS в сам файл, используя<style>
тег; как правило, это не очень хороший совет, но в этом случае он дает вам возможность использовать файл для режима обслуживания с обработкой WordPress, когда тема не загружена (и тема может обновляться, поэтому не надежна).Сохраните только что созданный файл в папке содержимого (обычно
/wp-content
).В вашем случае
functions.php
:Этот код будет проверять константу (см. Следующий пункт), и если пользователь не вошел в систему, загрузите файл, созданный в точке # 1, и выйдите.
Если вы хотите разрешить только пользователям с определенными возможностями, используйте
current_user_can('capability_to_allow')
вместоis_user_logged_in()
. См. Кодекс для получения дополнительной информации.Может быть, вы можете добавить
maintenance.php
ссылку на страницу входа в систему; таким образом незарегистрированный пользователь может щелкнуть его, не вводя вручную URL-адрес входа в адресной строке.Если вы используете тему, разработанную третьей стороной, используйте дочернюю тему ; таким образом вы сможете безопасно обновлять тему, не теряя своих изменений.
Если вы хотите включить режим обслуживания, откройте
wp_config.php
и вставьте туда:После этого, когда вы будете готовы снова сделать ваш сайт общедоступным, просто удалите эту строку или измените
true
на,false
чтобы упростить повторное включение.источник
define('WP_CONTENT_DIR','/url/to/define/');
в вашwp-config.php
файл.Предыдущий ответ является полным и хорошо написанным. В любом случае, если вы похожи на меня и хотите, чтобы все было в одном месте, вы можете
function.php
добавить следующие строки в файл и создатьmaintenance.php
файл в каталоге вашей темы.Это особенно полезно, если ваш репозиторий Git указывает только на каталог тем.
ПРИМЕЧАНИЯ
Я изменил заголовок, так
header('HTTP/1.1 503 Service Temporarily Unavailable');
как приведенный выше не работал для меня.источник