Ревизии записей в WordPress — полезная вещь: они позволяют откатить изменения, если что-то пошло не так. Но со временем их количество может сильно разрастись, занимая место в базе данных и замедляя работу сайта. В этой статье расскажу, как безопасно и эффективно удалить старые ревизии, освободить место и ускорить сайт без потери важных данных.
Что такое ревизии в WordPress и зачем их удалять
Каждый раз при сохранении записи WordPress создаёт копию — ревизию. Это удобно, если нужно вернуть старую версию. Но иногда ревизий становится слишком много. Особенно если много правок или большой объём контента.
Избыточные ревизии:
- Увеличивают размер базы данных.
- Усложняют и замедляют запросы к базе.
- Могут приводить к уменьшению производительности сайта.
Поэтому периодическое удаление старых ревизий — хорошая практика для поддержки скорости и стабильности.
Как посмотреть количество ревизий в базе
Для оценки проблемы можно выполнить SQL-запрос к базе данных через phpMyAdmin или любой другой инструмент:
SELECT post_id, COUNT(*) AS revisions_count FROM wp_posts WHERE post_type = 'revision' GROUP BY post_id ORDER BY revisions_count DESC;Этот запрос покажет, для каких записей сколько ревизий сохранено. Если цифры большие — пора чистить.
Удаление ревизий с помощью плагинов
Самый простой и безопасный способ — использовать плагины. Рекомендую:
- WP-Optimize — многофункциональный плагин для очистки базы, в том числе удаления ревизий. Можно настроить автоматическую очистку.
Подробнее на wpshop.ru - Better Delete Revision — специализированный плагин для удаления ревизий, простой и эффективный.
Подробнее на wpshop.ru
После установки плагина достаточно запустить очистку через интерфейс, и старые ревизии будут удалены.
Удаление ревизий вручную через SQL-запрос
Если вы уверены в своих действиях и имеете доступ к базе, можно удалить ревизии напрямую через SQL. Для этого:
DELETE FROM wp_posts WHERE post_type = 'revision';Этот запрос удалит все ревизии. Но лучше предварительно сделать резервную копию базы данных!
Можно ограничить удаление только ревизиями старше определённого времени, например, старше 30 дней:
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < NOW() - INTERVAL 30 DAY;Автоматическое ограничение количества ревизий в WordPress
Чтобы избежать накопления большого числа ревизий в будущем, можно ограничить их количество через wp-config.php. Добавьте эту строку:
define('WP_POST_REVISIONS', 5);Это ограничит число ревизий каждой записи до 5. Можно указать и другое число, либо false для полного отключения ревизий (не рекомендую).
Пример функции для удаления ревизий по крону
Для автоматизации удаления старых ревизий можно написать функцию и подключить её к крону WordPress:
function wpwebsite_delete_old_revisions() {
global $wpdb;
$days = 30; // удалять ревизии старше 30 дней
$wpdb->query( $wpdb->prepare(
"DELETE FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_date < NOW() - INTERVAL %d DAY",
$days
) );
}
add_action('wp_scheduled_delete', 'wpwebsite_delete_old_revisions');Эта функция будет запускаться вместе со стандартной задачей WordPress wp_scheduled_delete, которая отвечает за очистку мусора.
Оптимизация базы данных после удаления ревизий
После удаления ревизий желательно оптимизировать таблицы базы данных, чтобы освободить место и улучшить производительность. Это можно сделать SQL-запросом:
OPTIMIZE TABLE wp_posts;Или через плагины вроде WP-Optimize, которые делают это автоматически.
Заключение: поддержка базы в чистоте
Регулярное удаление старых ревизий — простой, но эффективный способ поддерживать скорость и стабильность сайта. Используйте плагины для удобства или автоматизируйте процесс кодом и кроном. Не забывайте делать резервные копии перед любыми изменениями в базе данных.