Как удалить старые псевдоверсии постов в WordPress: эффективные методы и примеры

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

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

Ревизии (или версии) — это автоматические сохранённые копии постов и страниц, которые WordPress создаёт при редактировании. Они позволяют откатиться к предыдущему варианту контента.
Однако:

  • С каждым изменением создаётся новая ревизия, и их количество быстро растёт.
  • Старая и неактуальная информация остаётся в базе, занимая место.
  • Избыточные ревизии замедляют запросы к базе данных, особенно на крупных сайтах.

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

Удаление ревизий через SQL-запросы: быстро и эффективно

Самый прямой способ — удалить ревизии напрямую из базы данных MySQL. Ревизии — это записи с типом revision в таблице wp_posts. Вот пример запроса, который удалит все ревизии:

DELETE FROM wp_posts WHERE post_type = 'revision';

Однако такой подход удалит все ревизии без разбора, что не всегда желательно. Лучше удалять только старые ревизии, например, старше 30 дней:

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

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

Добавление функции для удаления старых ревизий через PHP

Чтобы автоматизировать процесс удаления ревизий, можно добавить в файл functions.php темы или в отдельный плагин следующий код:

function wpcourse_delete_old_revisions() {
    global $wpdb;
    $days = 30; // удалять ревизии старше 30 дней
    $table = $wpdb->posts;
    $query = $wpdb->prepare(
        "DELETE FROM $table WHERE post_type = 'revision' AND post_date < %s",
        date('Y-m-d H:i:s', strtotime("-{$days} days"))
    );
    $wpdb->query($query);
}

// Запуск функции при активации темы (можно заменить на хуки по расписанию)
add_action('after_switch_theme', 'wpcourse_delete_old_revisions');

Этот код удалит все ревизии старше 30 дней при активации темы. Для регулярного удаления можно использовать WP-Cron.

Ограничение количества ревизий в WordPress

Чтобы предотвратить накопление большого числа ревизий, можно ограничить их количество с помощью константы WP_POST_REVISIONS. Добавьте в wp-config.php:

define('WP_POST_REVISIONS', 5); // хранить не более 5 ревизий на пост

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

Удаление ревизий с помощью плагинов

Если вы предпочитаете готовые решения, рассмотрите следующие плагины:

  • WP-Optimize — комплексный плагин для оптимизации базы, включая удаление ревизий.
  • Revision Control — позволяет управлять количеством ревизий для каждого типа постов.
  • Clearfy Pro — платный плагин для оптимизации производительности и управления ревизиями.

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

Как безопасно работать с ревизиями и не потерять данные

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

  • Всегда делайте резервные копии базы перед удалением.
  • Используйте ограничение количества ревизий, чтобы не накапливать слишком много.
  • Удаляйте только старые ревизии, сохраняя свежие.
  • Проверяйте работоспособность сайта после очистки.

Автоматизация удаления ревизий по Cron

Чтобы регулярно очищать старые ревизии, можно использовать WP-Cron. Пример кода для еженедельного удаления ревизий старше 30 дней:

function wpcourse_schedule_revision_cleanup() {
    if (!wp_next_scheduled('wpcourse_weekly_revision_cleanup')) {
        wp_schedule_event(time(), 'weekly', 'wpcourse_weekly_revision_cleanup');
    }
}
add_action('wp', 'wpcourse_schedule_revision_cleanup');

function wpcourse_do_revision_cleanup() {
    global $wpdb;
    $days = 30;
    $table = $wpdb->posts;
    $query = $wpdb->prepare(
        "DELETE FROM $table WHERE post_type = 'revision' AND post_date < %s",
        date('Y-m-d H:i:s', strtotime("-{$days} days"))
    );
    $wpdb->query($query);
}
add_action('wpcourse_weekly_revision_cleanup', 'wpcourse_do_revision_cleanup');

Этот код создаёт событие, которое каждую неделю удаляет старые ревизии автоматически.

Заключение

Удаление старых псевдоверсий постов в WordPress — важный шаг для оптимизации базы данных и ускорения сайта. Выбор метода зависит от ваших навыков и предпочтений: это может быть прямое удаление через SQL, использование небольшого кода в теме или плагинах, либо применение готовых инструментов как Clearfy Pro, которые упрощают управление ревизиями и оптимизацию в целом.

Если хотите узнать больше о профессиональных инструментах для WordPress, рекомендуем ознакомиться с Clearfy Pro — плагином, который поможет не только с ревизиями, но и с другими задачами оптимизации и безопасности.

Как создать автоматические отчёты в WordPress с помощью WPGPT
10.02.2026
Как отключить автозаполнение форм в WordPress
05.04.2026
Как удалить верстку WordPress без потери функциональности
29.11.2025
Как удалить псевдо-дублированный контент в WordPress
20.12.2025
Как использовать REST API для создания нестандартных запросов в WordPress
06.03.2026

Хотите научиться создавать сайты и зарабатывать на этом от 30 000 рублей в месяц?

Записаться на курс сейчас