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

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

Почему важно контролировать количество ревизий в WordPress

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

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

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

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

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

define('WP_POST_REVISIONS', 5);

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

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

Чтобы очистить базу данных от уже накопленных ревизий и поддерживать порядок, можно создать пользовательскую функцию, которая будет удалять ревизии старше определенного количества дней. Запустим её по расписанию с помощью WP-Cron.

Шаг 1. Создаем функцию очистки в functions.php

function wpkeys_delete_old_revisions() {
    global $wpdb;
    $days = 30; // удалять ревизии старше 30 дней
    $date_threshold = 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_threshold
    ));

    if ($revisions) {
        foreach ($revisions as $revision_id) {
            wp_delete_post($revision_id, true); // true — без помещения в корзину
        }
    }
}

Данная функция ищет ревизии старше 30 дней и удаляет их безвозвратно.

Шаг 2. Добавляем событие в WP-Cron

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

function wpkeys_schedule_revision_cleanup() {
    if (! wp_next_scheduled('wpkeys_revision_cleanup_hook')) {
        wp_schedule_event(time(), 'daily', 'wpkeys_revision_cleanup_hook');
    }
}
add_action('wp', 'wpkeys_schedule_revision_cleanup');

add_action('wpkeys_revision_cleanup_hook', 'wpkeys_delete_old_revisions');

Теперь функция wpkeys_delete_old_revisions будет автоматически запускаться раз в сутки и удалять старые ревизии.

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

После удаления ревизий таблица wp_posts остается фрагментированной. Рекомендуется оптимизировать базу данных, чтобы освободить место и улучшить производительность. Можно сделать это через phpMyAdmin или с помощью плагина Clearfy Pro, который включает удобный инструмент для оптимизации базы данных.

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

Использование плагинов для управления ревизиями

Если кодирование не для вас, есть готовые решения:

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

Все эти плагины доступны на https://wpshop.ru/.

Резюме и рекомендации по настройке

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

  1. В wp-config.php ограничьте количество ревизий.
  2. Добавьте автоматическую очистку старых ревизий по расписанию с помощью кода в functions.php.
  3. Регулярно оптимизируйте базу данных — вручную или с помощью плагинов, например, Clearfy Pro.

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

Как создать динамические формы в WordPress с помощью AJAX
23.12.2025
WooCommerce: автоматическое изменение атрибутов товаров при оформлении заказа
19.06.2026
WooCommerce: как избежать повторной оплаты при проблемах с samesite cookie
23.05.2026
WooCommerce: автоматическое удаление товаров без наличия через AJAX без перезагрузки страницы
05.07.2026
Как оценивать скорость загрузки страниц WordPress: практические методы и плагины
30.03.2026

На оформлении, скоро здесь появится полноценный ресурс