Как удалить старые версии постов в WordPress для оптимизации базы данных

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 с удобным интерфейсом и расширенными функциями.

Как создать собственный виджет WordPress: подробное техническое руководство
10.11.2025
Автоматический импорт данных из Google Sheets в WordPress: практическое руководство
18.01.2026
WooCommerce: как добавить пользовательское поле в форму оплаты через хук
08.05.2026
Как создать Custom Post Type с дополнительными метаданными в WordPress
23.12.2025
Как создать собственный ключ авторизации в WordPress
25.11.2025