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

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

Что такое ревизии записей в WordPress и зачем их удалять

Ревизии — это автоматические сохранения контента постов и страниц при редактировании. WordPress хранит их в таблице wp_posts с типом записи revision. При активном создании контента и частых редактированиях количество ревизий может превысить сотни и даже тысячи, занимая много места в базе и замедляя запросы.

Удаление старых ревизий помогает:

  • Сократить размер базы данных.
  • Улучшить производительность сайта и скорость админ-панели.
  • Облегчить резервное копирование и восстановление.

Однако полностью отключать ревизии не рекомендуется, так как они полезны для безопасности контента.

Как WordPress хранит ревизии в базе данных

Каждая ревизия — это отдельный пост с типом revision и связью с исходной записью через поле post_parent. Все метаданные ревизий хранятся в wp_postmeta. Чем больше ревизий, тем сложнее и медленнее выполнять запросы к таблицам.

Удаление ревизий через SQL-запросы

Самый быстрый способ очистить базу от ревизий — выполнить SQL-запрос напрямую к базе данных. Для этого можно использовать phpMyAdmin или любой другой инструмент работы с MySQL.

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

DELETE FROM wp_posts WHERE post_type = 'revision';

Этот запрос удалит все ревизии без разбора, что может быть рискованно, если вам нужна часть из них. Поэтому лучше удалять только старые ревизии.

Удаление ревизий старше определённого времени

Чтобы удалить ревизии, созданные более 30 дней назад, можно использовать такой запрос:

DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < DATE_SUB(NOW(), INTERVAL 30 DAY);

Таким образом, вы сохраните свежие ревизии, что полезно для текущей работы.

Удаление ревизий через WP-CLI

Если на вашем хостинге установлен WP-CLI, это удобный инструмент для управления WordPress из командной строки. Для удаления всех ревизий выполните:

wp post delete $(wp post list --post_type='revision' --format=ids) --force

Если нужно удалить только старые ревизии, используйте дополнительный фильтр по дате, предварительно получив список ID.

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

Чтобы не выполнять очистку вручную, можно добавить в тему или плагин код, который будет удалять ревизии по расписанию.

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

function _2wp_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);
        }
    }
}

// Запускаем функцию раз в неделю
if (!wp_next_scheduled('_2wp_delete_old_revisions')) {
    wp_schedule_event(time(), 'weekly', '_2wp_delete_old_revisions');
}
add_action('_2wp_delete_old_revisions', '_2wp_delete_old_revisions');

Этот код планирует еженедельное удаление ревизий старше 30 дней, сохраняя актуальные версии.

Отключение ревизий для новых записей

Если вы хотите ограничить количество сохраняемых ревизий, добавьте в wp-config.php строку:

define('WP_POST_REVISIONS', 3);

Это ограничит количество ревизий до трёх последних. Можно полностью отключить ревизии, установив значение в false, но делать это стоит с осторожностью.

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

Существует несколько удобных плагинов, которые помогут управлять ревизиями без ручного кода и SQL-запросов:

  • WP Sweep — позволяет удалять ревизии, спам, кэш и оптимизировать базу простым кликом.
  • Revision Control — даёт возможность ограничить количество ревизий для каждого типа записи.
  • Clearfy Pro — среди множества функций оптимизации есть возможность контролировать ревизии и очищать базу от ненужного мусора. Подробнее на wpshop.ru.

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

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

После удаления ревизий таблица wp_posts и связанные с ней таблицы могут оставаться фрагментированными, что снижает производительность. Для оптимизации выполните SQL-запрос:

OPTIMIZE TABLE wp_posts;

Или воспользуйтесь плагинами для оптимизации базы, например, тем же Clearfy Pro или WP Sweep, которые выполняют комплексную очистку и оптимизацию.

Важность резервного копирования

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

Итоговые рекомендации по работе с ревизиями

Удаление старых ревизий — важный шаг в оптимизации WordPress-сайта. Рекомендуется:

  • Регулярно очищать ревизии старше 30 дней.
  • Ограничить количество ревизий новыми настройками.
  • Использовать WP-CLI или плагины для автоматизации процесса.
  • Оптимизировать базу после очистки.
  • Не отключать ревизии полностью без веских причин.

Следуя этим рекомендациям, вы уменьшите нагрузку на базу данных, повысите скорость сайта и сохраните удобный функционал отката к предыдущим версиям записей.

Как использовать WordPress Transients для оптимизации производительности сайта
04.12.2025
Решение проблемы нестандартных типов полей в WordPress
07.12.2025
Как удалить кэш в WordPress: практическое руководство
21.11.2025
Автоматическое создание собственного шорткода с параметрами в WordPress
11.12.2025
Автоматическое создание миниатюр (thumbnail) для картинок в WordPress
01.12.2025