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

Версии записей (post revisions) в WordPress — это удобный механизм для сохранения истории изменений контента. Однако при активном создании и редактировании страниц и записей количество таких версий может вырасти до сотен и тысяч, что негативно влияет на размер базы данных и скорость работы сайта.

Что такое версии записей и почему их нужно контролировать

Каждый раз, когда вы сохраняете или обновляете запись, WordPress сохраняет её копию как версию. Это помогает откатиться к предыдущей редакции, если что-то пошло не так. Однако со временем эти версии накапливаются, занимая место в таблице wp_posts и замедляя запросы к базе данных.

Особенно актуально для сайтов с большим количеством контента и частыми обновлениями. Контроль количества версий помогает поддерживать базу в оптимальном состоянии без потери функциональности.

По умолчанию WordPress не ограничивает количество версий, но это можно исправить с помощью настроек и кода.

Как вручную удалить все версии записей через SQL-запрос

Если база данных уже содержит много версий, можно очистить их с помощью прямого SQL-запроса. Но перед этим обязательно сделайте резервную копию базы данных!

Вот пример запроса для удаления всех версий:

DELETE FROM wp_posts WHERE post_type = 'revision';

Этот запрос удалит все версии. Если у вас префикс таблиц отличается, замените wp_ на ваш префикс.

После этого база станет легче, но для предотвращения повторного накопления нужно ограничить число версий.

Ограничение количества версий с помощью константы в wp-config.php

Для контроля количества версий добавьте в файл wp-config.php следующую строку:

define('WP_POST_REVISIONS', 5);

Это ограничит количество сохраняемых версий до 5. Старые версии будут автоматически удаляться при сохранении новых.

Если нужно отключить версии полностью, можно поставить значение false:

define('WP_POST_REVISIONS', false);

Но будьте осторожны — это уберёт возможность отката изменений.

Автоматическое удаление старых версий с помощью хука и пользовательской функции

Если вы хотите более гибко контролировать процесс, можно добавить функцию, которая будет удалять старые версии по расписанию или при определенных условиях.

Пример функции, удаляющей версии старше 30 дней:

function wpdir_delete_old_revisions() {
    global $wpdb;
    $days = 30;
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $revisions = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_date < %s",
        $date
    ));

    if (!empty($revisions)) {
        foreach ($revisions as $revision_id) {
            wp_delete_post($revision_id, true);
        }
    }
}

add_action('wp_scheduled_delete', 'wpdir_delete_old_revisions');

Эта функция подключается к событию wp_scheduled_delete, которое запускается по расписанию WordPress для удаления мусора.

Плагины для управления версиями записей

Если вы предпочитаете готовые решения, можно использовать плагины, которые позволяют контролировать версии через интерфейс, например:

  • Disable Post Revisions — простой плагин для отключения версий.
  • Clearfy Pro — многофункциональный плагин с возможностью ограничивать версии и оптимизировать базу.

Плагин Clearfy Pro полезен тем, что объединяет в себе не только управление версиями, но и другие инструменты для повышения производительности и безопасности.

Как проверить количество версий в базе данных

Для оценки «веса» версий можно выполнить запрос:

SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';

Это покажет количество текущих версий. Если число большое (сотни и тысячи), стоит задуматься об оптимизации.

Итоги и рекомендации по управлению версиями

Управление версиями записей — важный аспект поддержания производительности WordPress-сайта. Вот основные рекомендации:

  • Регулярно удаляйте старые версии через SQL или автоматические функции.
  • Ограничьте количество версий с помощью константы WP_POST_REVISIONS.
  • Используйте проверенные плагины, например Clearfy Pro, для удобного управления и оптимизации.
  • Обязательно делайте резервные копии базы перед массовым удалением.

Такой подход позволит поддерживать базу данных в чистоте и повысить скорость работы вашего сайта.

WooCommerce: автоматическое удаление заказов по неактивности и статусу
16.05.2026
WooCommerce: Автоматическое удаление товаров с оценками старше 30 дней
19.06.2026
Как удалить версии записей в WordPress для оптимизации базы данных
04.02.2026
Автоматизация создания резервных копий в WordPress: плагины и кодовые решения
14.01.2026
Как создать адаптивный плагин WordPress с настройками
09.11.2025