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

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

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

WordPress по умолчанию сохраняет ревизии постов при каждом сохранении. Это удобно для восстановления предыдущих версий, но:
— Чем больше ревизий, тем больше нагрузка на базу данных.
— Резервные копии растут в размере.
— Запросы к базе становятся медленнее, особенно на больших сайтах.
Удаление старых ревизий помогает уменьшить размер таблиц wp_posts и wp_postmeta, ускорить работу запросов и улучшить производительность сайта.

Способы удаления ревизий

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

Можно зайти в phpMyAdmin и выполнить запрос:

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

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

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

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

Преимущества плагина Clearfy Pro:
– Удобный интерфейс для настройки очистки.
– Возможность регулярного удаления по расписанию.
– Поддержка очистки других данных (транзиенты, спам, черновики).

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

Если не хочется использовать плагины, можно реализовать автоматическую очистку через WP-Cron — встроенный планировщик задач WordPress.

Добавим функцию в файл functions.php вашей темы или в отдельный плагин:

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

// Планируем событие при активации темы или плагина
if (!wp_next_scheduled('wpall_delete_old_revisions_hook')) {
    wp_schedule_event(time(), 'daily', 'wpall_delete_old_revisions_hook');
}

// Хук на запуск функции
add_action('wpall_delete_old_revisions_hook', 'wpall_delete_old_revisions');

Этот код создаёт ежедневную задачу, которая удаляет ревизии старше 30 дней. Вы можете изменить период, поменяв значение $days.

Как работает код

1. Функция wpall_delete_old_revisions формирует SQL-запрос на удаление ревизий по дате.
2. Через WP-Cron по событию wpall_delete_old_revisions_hook запускается функция каждый день.
3. Планировщик создаётся при первом подключении к сайту, если ещё не был создан.

Как проверить и отладить WP-Cron задачи

Для контроля задач WP-Cron рекомендую плагин WP Crontrol. Он позволяет:
– Просматривать запланированные задачи.
– Запускать задачи вручную.
– Удалять или менять расписание задач.

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

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

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

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

define('WP_POST_REVISIONS', 5); // хранить максимум 5 ревизий

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

Использование специализированных плагинов

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

Заключение

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

Как удалить или отключить XML-RPC в WordPress: практические решения и примеры кода
09.01.2026
WooCommerce: автоматическое удаление неоплаченных заказов по срокам с помощью кода
05.05.2026
WooCommerce: автоматическое удаление неоплаченных заказов по срокам
23.05.2026
WooCommerce: автоматическое удаление неоплаченных заказов по срокам
19.05.2026
WPAll Автообновления WordPress: как настроить безопасное обновление плагинов и тем
04.11.2025