Автосохранение в WordPress — полезная функция, которая помогает предотвратить потерю данных при редактировании записей и страниц. Однако в некоторых случаях оно становится причиной быстрого увеличения количества ревизий и перегрузки базы данных. В этой статье мы подробно разберём, как отключить автосохранение в WordPress или настроить его поведение, чтобы оптимизировать работу сайта и снизить нагрузку.
Зачем отключать автосохранение и ревизии в WordPress
Стандартно WordPress сохраняет черновики записи каждые 60 секунд. Это приводит к тому, что в базе данных скапливается большое количество ревизий — копий записей, которые сохраняются автоматически. Если у вас много записей и активные редакторы, это может:
- Увеличить размер базы данных;
- Замедлить работу админ-панели;
- Создать сложности при резервном копировании;
- Увеличить нагрузку на сервер.
Поэтому отключение автосохранения или ограничение количества ревизий — практическое решение для сайтов с высокой нагрузкой или специализированных случаев, когда автосохранение мешает.
Как отключить автосохранение в WordPress с помощью кода
Самый простой способ — добавить специальный фильтр в файл functions.php вашей темы или в собственный плагин. Вот пример функции, которая отключит автосохранение:
function wpwebsite_disable_autosave() {
wp_deregister_script('autosave');
}
add_action('wp_print_scripts', 'wpwebsite_disable_autosave');
Эта функция отменяет регистрацию скрипта автосохранения, и WordPress перестаёт автоматически сохранять черновики. Обратите внимание, что это отключит только автосохранение, но не ревизии.
Ограничение количества ревизий
Чтобы полностью контролировать ревизии, можно ограничить их количество. Добавьте в wp-config.php перед строкой /* That's all, stop editing! Happy blogging. */ следующий код:
define('WP_POST_REVISIONS', 3); // Максимум 3 ревизии
Если вместо числа поставить false, ревизии будут полностью отключены. Но это не рекомендуется, так как ревизии полезны для восстановления содержимого.
Использование плагинов для управления автосохранением и ревизиями
Если вы не хотите править код, можно воспользоваться плагинами:
- Clearfy — мощный плагин для оптимизации WordPress, который позволяет отключать автосохранение и контролировать ревизии в несколько кликов.
- WP Rocket — хотя основной функционал — кэширование, в настройках можно ограничить ревизии и улучшить производительность.
- Revision Control — плагин специально для управления ревизиями, с гибкими настройками.
Например, в Clearfy вы можете найти опцию отключения автосохранения и ограничить ревизии без знаний программирования. Подробнее о Clearfy и его возможностях смотрите на официальной странице плагина.
Как удалить старые ревизии из базы данных
Отключение автосохранения и ограничение ревизий — это профилактика. Чтобы оптимизировать базу данных сейчас, удалите старые ревизии. Для этого можно использовать SQL-запрос в phpMyAdmin или плагин:
DELETE FROM wp_posts WHERE post_type = 'revision';
Или установите плагин WP-Optimize, который позволяет безопасно очистить ревизии и оптимизировать таблицы базы данных в один клик.
Дополнительные советы по оптимизации работы с автосохранением
Если полностью отключать автосохранение не хочется, можно изменить интервал автосохранения. Для этого добавьте в wp-config.php:
define('AUTOSAVE_INTERVAL', 300); // 300 секунд = 5 минут
Это уменьшит частоту сохранений и снизит нагрузку. Но учтите, что в случае сбоя вы сможете потерять до 5 минут работы.
Также важно следить за плагинами, которые могут создавать дополнительные ревизии или использовать собственные механизмы автосохранения. Их стоит проверить и при необходимости отключить лишние функции.
Пример функции для вывода количества ревизий записи
Полезно знать, сколько ревизий накопилось у каждой записи. Можно добавить в functions.php такую функцию и использовать её в админке или в шаблоне:
function wpwebsite_count_post_revisions($post_id) {
$revisions = wp_get_post_revisions($post_id);
return count($revisions);
}
Пример использования:
$count = wpwebsite_count_post_revisions(123);
echo 'Количество ревизий: ' . $count;
Это поможет отслеживать нагрузку и принимать решения по оптимизации.