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

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

Почему важно удалять старые ревизии WordPress

Ревизии постов в WordPress создаются по умолчанию и сохраняются в таблице wp_posts с типом revision. Если у вас большой сайт с сотнями или тысячами записей, ревизии могут занимать значительное место в базе данных. Это ведет к нескольким проблемам:

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

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

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

Самый прямой способ — выполнить SQL-запрос, который удалит все ревизии из таблицы wp_posts. Сделать это можно через phpMyAdmin, Adminer или консоль MySQL.

DELETE FROM wp_posts WHERE post_type = 'revision';

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

Учтите, что префикс таблиц wp_ может отличаться — проверьте свой вариант и замените в запросе.

Удаление ревизий по определённому условию

Если нужно удалить ревизии старше, например, 30 дней, используйте запрос с датой:

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

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

Создание функции для автоматического удаления ревизий через WP-CLI или в коде темы

Для автоматизации процесса удаления ревизий без плагинов можно добавить функцию в файл functions.php вашей темы или создать кастомный скрипт для WP-CLI.

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

function wpgenerate_delete_old_revisions() {
    global $wpdb;
    $days = 30;
    $table = $wpdb->posts;
    $result = $wpdb->query(
        $wpdb->prepare(
            "DELETE FROM $table WHERE post_type = 'revision' AND post_date < DATE_SUB(NOW(), INTERVAL %d DAY)",
            $days
        )
    );
    return $result;
}

Вы можете вызвать эту функцию вручную через админку, например, при помощи AJAX или WP-CLI, либо поставить её на cron-задачу для регулярного удаления.

Пример интеграции с WP-Cron

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

add_action('wpgenerate_weekly_revision_cleanup', 'wpgenerate_delete_old_revisions');

if (!wp_next_scheduled('wpgenerate_weekly_revision_cleanup')) {
    wp_schedule_event(time(), 'weekly', 'wpgenerate_weekly_revision_cleanup');
}

Этот код ставит задачу, которая еженедельно удаляет ревизии старше 30 дней, снижая нагрузку без вмешательства администратора.

Ограничение количества ревизий в WordPress через wp-config.php

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

define('WP_POST_REVISIONS', 5);

Это ограничит количество ревизий для каждого поста до 5 последних. Более старые автоматически удаляются при сохранении новых.

Если установить значение false, то ревизии вообще не будут сохраняться, но это не рекомендуется, так как теряется возможность отката.

Плагины для управления ревизиями и оптимизации базы данных

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

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

Практические советы для оптимизации хранения ревизий

Чтобы эффективно управлять ревизиями, рекомендую:

  • Ограничить количество ревизий через WP_POST_REVISIONS.
  • Раз в месяц запускать удаление старых ревизий.
  • Периодически оптимизировать таблицы базы данных, используя SQL-команду OPTIMIZE TABLE wp_posts; или WP-CLI.
  • Использовать инструменты мониторинга базы данных, чтобы отслеживать рост таблиц.

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

Как создать автоматические задания в WordPress с помощью WP-Cron
21.11.2025
Как автоматически отправлять сообщения в Telegram из WordPress
25.02.2026
Как установить автоматический редирект в WordPress без плагинов
24.01.2026
Как автоматически создавать отзывы с экспертной оценкой в WordPress
22.02.2026
Как автоматически удалять спам из формы обратной связи WordPress
27.03.2026