Обновления WordPress, плагинов и тем необходимы для безопасности и стабильности сайта, но иногда после них возникают ошибки, которые могут привести к недоступности сайта или потере функционала. В этой статье мы рассмотрим, как реализовать автоматический откат (rollback) обновлений при возникновении критических ошибок на сайте.
Почему автоматический откат обновлений важен для WordPress
Обновления могут ломать совместимость с другими плагинами, темами или даже с используемым PHP-кодом. В некоторых случаях после обновления сайт перестает корректно работать, а админ-панель становится недоступной, что требует вмешательства разработчика.
Автоматизация отката помогает минимизировать простой сайта, быстро возвращая его к работоспособному состоянию без ручного поиска и восстановления.
Однако в стандартном функционале WordPress нет встроенного механизма для автоматического rollback, поэтому мы можем реализовать его самостоятельно или с помощью плагинов.
Обзор плагинов для отката обновлений в WordPress
На рынке есть несколько плагинов, которые позволяют откатывать обновления:
- WP Rollback — позволяет откатывать версии плагинов и тем вручную из админки, но не автоматизирует процесс.
- Rollback Update Failure — плагин, который пытается автоматически откатить обновления, если после них сайт перестает работать.
- WP Downgrade — позволяет откатывать ядро WordPress к выбранной версии, но не отслеживает ошибки после обновлений.
Для автоматического отката с обнаружением ошибок лучше использовать кастомные решения на базе хуков обновления.
Как реализовать автоматический rollback обновлений своими силами
Шаг 1. Создаем резервную копию файлов и базы до обновления
Для отката нам необходима копия файлов плагина/темы и базы данных. Лучше всего интегрировать это с плагинами резервного копирования, например, Clearfy Pro или WP Remote Post.
Пример создания резервной копии в PHP до обновления плагина:
function wptest_create_backup_before_update($plugin) {
// Здесь логика копирования файлов и базы данных
// Можно использовать WP_Filesystem API для копирования
}
add_action('upgrader_pre_install', 'wptest_create_backup_before_update');
Шаг 2. Отслеживаем успешность обновления
Используем хук upgrader_process_complete, чтобы определить, прошло ли обновление успешно и есть ли ошибки.
function wptest_check_update_result($upgrader_object, $options) {
if ($options['action'] === 'update' && $options['type'] === 'plugin') {
// Проверяем сайт на ошибки после обновления
if (wptest_detect_errors()) {
wptest_rollback_plugin($options['plugins']);
}
}
}
add_action('upgrader_process_complete', 'wptest_check_update_result', 10, 2);
Шаг 3. Определяем функцию обнаружения ошибок
Для простоты проверим наличие фатальных ошибок на сайте, например, делая запрос к сайту или проверяя логи PHP.
function wptest_detect_errors() {
// Пример псевдокода для проверки HTTP-кода главной страницы
$response = wp_remote_get(home_url());
if (is_wp_error($response) || wp_remote_retrieve_response_code($response) >= 500) {
return true; // Ошибка обнаружена
}
return false;
}
Шаг 4. Реализуем функцию отката
Откат – это возврат файлов плагина/темы из резервной копии и восстановление базы, если нужно.
function wptest_rollback_plugin($plugins) {
foreach ($plugins as $plugin) {
// Логика восстановления файлов из резервной копии
// Например, копируем обратно старую версию плагина
}
// Можно также отправить уведомление администратору
}
Дополнительные советы по безопасному обновлению WordPress
Чтобы уменьшить риск ошибок, рекомендуется:
- Выполнять обновления сначала на тестовом сервере.
- Использовать плагин Clearfy Pro для оптимизации и безопасности.
- Использовать staging-среду для проверки после обновления.
- Регулярно создавать резервные копии с помощью плагинов.
- Использовать логирование ошибок в PHP и WordPress для быстрого обнаружения проблем.
Пример интеграции с плагином Clearfy Pro для автоматизации резервного копирования
Clearfy Pro имеет API для запуска резервного копирования перед обновлением. Например:
function wptest_backup_with_clearfy() {
if (function_exists('clearfy_backup_run')) {
clearfy_backup_run();
}
}
add_action('upgrader_pre_install', 'wptest_backup_with_clearfy');
Это позволит автоматически создавать бэкап перед обновлением, что значительно повысит безопасность процесса.
Заключение
Автоматический откат обновлений в WordPress – задача, требующая грамотного подхода и интеграции нескольких механизмов: резервного копирования, мониторинга ошибок и восстановления. В статье мы рассмотрели, как реализовать такую систему своими силами, а также какие плагины могут помочь в этом.
Использование таких решений позволит минимизировать риск простоев сайта и упростит администрирование обновлений.