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

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

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

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

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

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

Как удалить все старые ревизии через базу данных MySQL

Самый простой и быстрый способ — выполнить SQL-запрос, который удалит все ревизии из таблицы wp_posts. Ревизии имеют тип revision.

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

DELETE FROM wp_posts WHERE post_type = 'revision';

Этот запрос удалит все ревизии. Однако если вы хотите сохранить последние 1-2 версии, придется использовать более сложные методы.

Удаление ревизий, оставляя последние по каждому посту

Для этого можно использовать PHP-скрипт, который перебирает ревизии и удаляет все, кроме последних n штук на пост.

Пример функции с префиксом wpteam_:

function wpteam_delete_old_revisions($keep = 2) {
    global $wpdb;
    $posts = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision' ORDER BY post_parent, post_date DESC");
    $current_post = 0;
    $count = 0;
    foreach ($posts as $post_id) {
        $parent = $wpdb->get_var($wpdb->prepare("SELECT post_parent FROM {$wpdb->posts} WHERE ID = %d", $post_id));
        if ($parent != $current_post) {
            $current_post = $parent;
            $count = 1;
        } else {
            $count++;
        }
        if ($count > $keep) {
            wp_delete_post($post_id, true); // принудительное удаление
        }
    }
}

Эта функция удалит все ревизии, кроме последних двух для каждого поста. Запустите её один раз через плагин для пользовательских функций или в консоли WP-CLI.

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

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

Вы можете настроить:

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

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

Ограничение количества ревизий для новых постов через wp-config.php

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

define('WP_POST_REVISIONS', 3);

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

Если указать false — ревизии отключатся полностью, но это рискованно, так как потеряется возможность восстановления.

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

Если у вас есть доступ к командной строке сервера, WP-CLI — мощный инструмент для управления WordPress.

Команда для удаления всех ревизий:

wp post delete $(wp post list --post_type='revision' --format=ids) --force

Это быстро и удобно, особенно на больших сайтах.

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

Можно написать свою команду, которая будет удалять ревизии, оставляя последние n.

Пример кода для файла wp-cli.php в вашей теме или плагине:

if (defined('WP_CLI') && WP_CLI) {
    WP_CLI::add_command('wpteam delete-revisions', function($args) {
        $keep = isset($args[0]) ? (int)$args[0] : 2;
        wpteam_delete_old_revisions($keep);
        WP_CLI::success("Deleted old revisions, kept last {$keep} per post.");
    });
}

Так вы сможете вызывать wp wpteam delete-revisions 3 для удаления с сохранением трех последних ревизий.

Как предотвратить чрезмерное накопление ревизий: лучшие практики

Кроме ограничения числа ревизий, следуйте рекомендациям:

  • Редактируйте контент аккуратно, избегая частых мелких сохранений
  • Используйте визуальные редакторы с функцией автосохранения, но контролируйте частоту
  • Периодически чистите базу данных с помощью SQL или плагинов
  • Делайте резервные копии перед удалением и оптимизацией

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

Заключение

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

Рекомендую комбинировать эти методы и не забывать о регулярных резервных копиях. Если нужно автоматизировать процесс — WP-CLI и Clearfy Pro помогут сделать это быстро и удобно.

Подробнее о плагине Clearfy Pro и других решениях для улучшения WordPress можно узнать на официальном сайте WPSHOP.

Как изменить регистрацию пользователей в WordPress без плагинов
20.02.2026
Как автоматически изменять мета данные постов в WordPress по условию
06.03.2026
Как защитить WordPress от взломов: практические советы
27.11.2025
Как запретить регистрацию новых пользователей в WordPress
11.01.2026
Автоматическое удаление нерабочих записей WordPress по условию успешности
03.04.2026

Возникли задачи по WP? Вы можете задать свой вопрос на FAQwp.com Либо обратиться к специалистам поддержки.