WordPress по умолчанию сохраняет каждую ревизию (версию) записи или страницы, чтобы вы могли откатиться к предыдущему варианту. Это полезно для безопасности контента, но со временем количество ревизий может значительно увеличиться и привести к раздуванию базы данных, снижению производительности сайта и усложнению резервного копирования.
Почему важно контролировать количество ревизий в WordPress
Каждая ревизия — это отдельная запись в таблице wp_posts с типом revision. При активном редактировании популярных страниц или записей их количество может исчисляться сотнями, а иногда и тысячами. Это напрямую влияет на скорость запросов к базе, увеличивает размер дампов и замедляет работу бэкапов.
Кроме того, многие хостеры ограничивают размер базы данных, и накопление ревизий приводит к преждевременному достижению лимитов.
Оптимизация и чистка ревизий — важная задача для поддержания производительности сайта, особенно когда речь идёт о проектах на WordPress с большим объёмом контента.
Как вручную удалить старые ревизии через SQL-запрос
Если у вас есть доступ к phpMyAdmin или другому инструменту для работы с базой, можно удалить все ревизии одним запросом:
DELETE FROM wp_posts WHERE post_type = 'revision';
Однако этот метод полностью удалит все ревизии без возможности восстановления. Рекомендуется предварительно сделать бэкап базы данных.
Если хотите удалить только ревизии старше определённой даты, используйте такой запрос:
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < '2023-01-01 00:00:00';
Замените дату на вашу актуальную.
Автоматическое ограничение количества ревизий через wp-config.php
Чтобы предотвратить чрезмерное накопление ревизий, можно ограничить их количество в настройках WordPress. Добавьте в wp-config.php следующий код:
define('WP_POST_REVISIONS', 5); // Сохранять максимум 5 ревизий
Это позволит системе хранить не более 5 последних версий каждой записи или страницы. Старые ревизии будут автоматически удаляться при сохранении новых.
Удаление ревизий с помощью плагинов
Если хотите управлять ревизиями без ручных запросов и технических настроек, используйте плагины:
- WP-Optimize — многофункциональный плагин для очистки базы, включая ревизии. Позволяет удалять ревизии, спам, черновики и оптимизировать таблицы.
- Clearfy Pro — расширенный инструмент для оптимизации WordPress, умеет ограничивать ревизии и удалять их.
- Better Delete Revision — специализированный плагин для удаления ревизий без риска для данных.
Все плагины бесплатны, доступны в репозитории WordPress и на WPSHOP.ru.
Пример функции автоматического удаления старых ревизий при сохранении записи
Можно добавить кастомный хук, который будет удалять все ревизии старше 30 дней при сохранении поста. Вставьте этот код в файл functions.php вашей темы или в плагин:
function wpbeginru_delete_old_revisions($post_id) {
global $wpdb;
// Проверяем тип записи и права
if (wp_is_post_revision($post_id)) {
return;
}
$days = 30;
$date_limit = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
$wpdb->query(
$wpdb->prepare(
"DELETE FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_parent = %d AND post_date < %s",
$post_id,
$date_limit
)
);
}
add_action('save_post', 'wpbeginru_delete_old_revisions');
Этот код удалит ревизии старше 30 дней для конкретной записи при её обновлении. Это помогает поддерживать базу в чистоте без ручных операций.
Выводы и рекомендации
Управление ревизиями — важный шаг для ускорения сайта и уменьшения базы данных. Рекомендуется:
- Ограничить количество ревизий через
WP_POST_REVISIONS. - Регулярно чистить старые ревизии с помощью SQL-запросов или плагинов.
- Использовать автоматические скрипты для удаления устаревших ревизий.
- Делать резервные копии базы перед массовой очисткой.
Если хотите быстро и безопасно оптимизировать базу, рассмотрите плагин Clearfy Pro с удобным интерфейсом и расширенными функциями.