Почему стоит отключить автосохранение в WordPress?
Автосохранение (autosave) в WordPress – полезная функция, которая сохраняет изменения записи каждые 60 секунд. Но в некоторых случаях, особенно при работе с крупными страницами или сложными конструкторами, автосохранение вызывает проблемы: замедление интерфейса, конфликты с плагинами, чрезмерное увеличение базы данных из-за множества ревизий.
Если вы хотите контролировать сохранение вручную или оптимизировать производительность, отключение автосохранения — рабочее решение. При этом важно не потерять данные, поэтому простое удаление скрипта autosave не подходит.
Диагностика проблем с автосохранением
Перед отключением автосохранения убедитесь, что именно оно вызывает проблемы:
- Замедление редактора: откройте консоль браузера (F12) на странице редактирования записи и посмотрите, нет ли ошибок от
autosave.js. - Чрезмерный рост таблицы
wp_postsс типомrevision: используйте phpMyAdmin или WP-CLI (wp post list --post_type=revision --format=ids | wc -w) для подсчёта ревизий. - Проблемы с кэшированием или конфликт плагинов: временно отключите плагины и проверьте, исчезает ли проблема.
Пошаговое отключение автосохранения без потери данных
1. Отключение автосохранения через фильтр
Надёжный способ — использовать фильтр WordPress autosave_disable. Добавьте в файл functions.php вашей темы или в кастомный плагин следующий код:
add_filter('autosave_disable', '__return_true');Этот фильтр полностью отключит автосохранение.
2. Контроль ревизий для уменьшения нагрузки
Чтобы предотвратить накопление ревизий и снизить нагрузку на базу, можно ограничить их количество. Добавьте в wp-config.php:
define('WP_POST_REVISIONS', 3); // сохранять не более 3 ревизий3. Настройка интервала автосохранения (альтернатива)
Если полностью отключать не хочется, можно увеличить интервал автосохранения. Например, в functions.php:
function custom_autosave_interval() {
return 300; // 5 минут вместо 60 секунд
}
add_filter('autosave_interval', 'custom_autosave_interval');Проверка результата после внедрения
- Откройте страницу редактирования записи, откройте консоль браузера и убедитесь, что запросы на
admin-ajax.php?action=autosaveне отправляются (при полном отключении). - Проверьте таблицу
wp_posts, количество ревизий не увеличивается после сохранений. - В интерфейсе редактора не появляется сообщения об автосохранении.
Частые ошибки и их исправление
- Кэш браузера мешает обновлениям: очистите кэш или откройте редактор в режиме инкогнито.
- Код добавлен в неправильное место: фильтр
autosave_disableдолжен быть вfunctions.phpактивной темы или в плагине, а не в плагинах кеширования. - Проблемы с плагинами безопасности: некоторые плагины блокируют AJAX-запросы, проверьте логи и настройте исключения.
Практические советы по безопасности и производительности
- Отключение автосохранения увеличивает риск потери данных при сбое браузера или отключении питания. Для защиты используйте надёжные плагины резервного копирования, например WPRemark, с автоматическим созданием бэкапов.
- Ограничение количества ревизий помогает уменьшить размер базы данных и ускорить резервное копирование.
- Для сложных проектов рассмотрите оптимизацию редактора — например, использование Gutenberg с минимальным количеством блоков и отключение ненужных скриптов.
Сравнительная таблица способов отключения автосохранения
| Метод | Плюсы | Минусы | Пример кода |
|---|---|---|---|
Фильтр autosave_disable | Простое и надёжное отключение | Полностью отключает, риск потери данных | |
| Увеличение интервала автосохранения | Снижает нагрузку, сохраняет функционал | Может не решить все проблемы с производительностью | |
| Ограничение ревизий | Уменьшает размер базы, совместимо с автосохранением | Не отключает сам autosave | |