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

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

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

Ревизии — это автоматические сохранения изменений поста или страницы. Каждый раз при сохранении или обновлении записи создаётся новая ревизия. Это полезно для восстановления информации, если что-то пошло не так, но со временем ревизии могут накапливаться и сильно раздувать таблицу wp_posts в базе данных.

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

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

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

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);

Так вы сохраните недавние ревизии и удалите только устаревшие.

Удаление ревизий с помощью PHP-кода в functions.php

Если не хотите работать напрямую с базой, можно написать функцию для удаления ревизий с помощью WP_Query и функций WordPress.

Добавьте в файл functions.php вашей темы следующий код:

function wpbox_delete_old_revisions() {
    global $wpdb;
    $days = 30; // Удаляем ревизии старше 30 дней

    $query = $wpdb->prepare(
        "DELETE p FROM {$wpdb->posts} p
         WHERE p.post_type = 'revision'
         AND p.post_date < NOW() - INTERVAL %d DAY",
        $days
    );

    $deleted = $wpdb->query($query);

    if($deleted === false) {
        error_log('WPBOX: Ошибка при удалении ревизий');
    } else {
        error_log('WPBOX: Удалено ревизий: ' . $deleted);
    }
}

// Запускаем один раз через админ-панель или WP-CLI
// wpbox_delete_old_revisions();

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

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

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

define('WP_POST_REVISIONS', 5);

Здесь 5 — максимальное количество ревизий, которое будет храниться для каждого поста. Если указать 0, ревизии отключатся полностью, что не рекомендуется, так как теряется возможность отката.

Ограничение ревизий поможет предотвратить чрезмерный рост таблицы в будущем.

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

Хотя в статье показаны решения без плагинов, иногда удобно использовать специализированные инструменты:

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

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

Выводы и рекомендации

Удаление старых ревизий — важный шаг для оптимизации WordPress-сайта. Самый простой и быстрый способ — SQL-запрос, но он требует осторожности. Код на PHP позволяет интегрировать удаление в админ-панель или автоматизировать процесс. Не забывайте ограничивать количество ревизий через wp-config.php, чтобы минимизировать нагрузку на базу в будущем.

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

Как сделать динамические варианты в выборах форм в WordPress
17.04.2026
Как создать и использовать AJAX в WordPress: подробное руководство с примерами
17.11.2025
Автоматическое удаление старых ревизий в WordPress с помощью кода
30.01.2026
Как удалить все посты из WordPress одним кликом
24.11.2025
Как защитить WordPress от взломов: практические методы и примеры кода
29.11.2025