WordPress автоматически сохраняет версии (ревизии) ваших записей и страниц, что позволяет откатиться к предыдущим вариантам контента. Однако со временем количество ревизий может значительно увеличиться, что негативно влияет на размер базы данных и производительность сайта. В этой статье подробно разберём, как грамотно удалить старые версии записей, какие плагины для этого использовать и как автоматизировать процесс с помощью собственного кода.
Что такое версии записей в WordPress и зачем их удалять
Каждый раз при сохранении записи WordPress создаёт её копию — ревизию. Это удобно, если вы хотите вернуть прежний вариант текста или исправить ошибку. Но если вести активный блог с множеством правок, количество ревизий может стать огромным и занимать сотни мегабайт в базе данных.
Проблемы от накопления ревизий:
- Увеличение размера таблицы
wp_postsиwp_postmeta. - Замедление запросов к базе данных, что влияет на скорость загрузки сайта.
- Риски повреждения базы из-за большого количества данных.
Поэтому периодическая очистка старых версий — важная задача для поддержания сайта в хорошем состоянии.
Как удалить версии записей с помощью плагинов
Плагин WP-Optimize
Один из самых популярных универсальных плагинов для оптимизации базы данных — WP-Optimize. Он умеет удалять не только ревизии, но и спам-комментарии, временные опции, очищать кеш.
Чтобы удалить версии записей:
- Установите и активируйте WP-Optimize.
- Перейдите в раздел WP-Optimize > Database.
- Поставьте галочку на «Удалить все старые версии записей».
- Нажмите «Выполнить оптимизацию».
Плагин автоматически просканирует таблицы и удалит все ревизии. Это самый простой способ, не требующий технических знаний.
Плагин Revision Control
Revision Control — удобный инструмент для контроля количества ревизий. Помимо удаления старых версий, он позволяет ограничить количество ревизий для каждой записи.
Как использовать:
- Установите и активируйте Revision Control.
- В админке WordPress перейдите в Настройки > Revision Control.
- Укажите максимальное количество ревизий, которые хотите сохранить (например, 3).
- Сохраните настройки.
После установки плагин будет автоматически удалять лишние версии при сохранении записи. Для удаления уже существующих ревизий можно использовать WP-Optimize.
Удаление ревизий с помощью SQL-запросов
Если у вас есть доступ к базе данных через phpMyAdmin или другой инструмент, можно удалить ревизии напрямую через SQL. Это эффективно, но требует осторожности и резервного копирования базы.
Для удаления всех ревизий выполните следующий запрос:
DELETE FROM wp_posts WHERE post_type = 'revision';Этот запрос удалит все записи с типом revision. После этого рекомендуется оптимизировать таблицу:
OPTIMIZE TABLE wp_posts;Если у вас префикс таблиц отличается от wp_, замените его на ваш.
Автоматическое ограничение количества ревизий через functions.php
Чтобы не накапливать ревизии в будущем, можно ограничить их количество через файл functions.php вашей темы или создать небольшой плагин. Добавьте следующий код:
function wpmagazin_limit_post_revisions() {
return 3; // Максимум 3 ревизии на запись
}
add_filter('wp_revisions_to_keep', 'wpmagazin_limit_post_revisions', 10, 2);Этот фильтр заставит WordPress хранить не более трёх ревизий для каждой записи. Старые версии будут удаляться автоматически при сохранении новых.
Собственная функция для удаления ревизий с возможностью вызова вручную
Если нужен более гибкий способ, можно добавить в functions.php функцию для удаления всех ревизий вручную:
function wpmagazin_delete_all_revisions() {
global $wpdb;
$revisions = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision'");
if (!empty($revisions)) {
foreach ($revisions as $revision_id) {
wp_delete_post($revision_id, true);
}
}
}
// Для вызова функции вручную, например, через WP-CLI или хук
// wpmagazin_delete_all_revisions();Эта функция использует стандартный метод wp_delete_post для корректного удаления ревизий, включая очистку метаданных.
Рекомендации по регулярной очистке и поддержке базы данных
Для поддержания базы данных в оптимальном состоянии:
- Используйте автоматическое ограничение ревизий (как описано выше).
- Периодически запускайте очистку с помощью WP-Optimize или аналогичных плагинов.
- Регулярно делайте резервные копии базы данных перед любыми массовыми удалениями.
- Оптимизируйте таблицы базы данных, чтобы уменьшить фрагментацию.
- Мониторьте размер таблиц и скорость работы сайта, чтобы вовремя реагировать на рост данных.
Соблюдение этих простых правил поможет вашему сайту на WordPress работать быстро и без сбоев, а база данных не будет раздуваться от устаревших ревизий.