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

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

Что такое версии постов (ревизии) в WordPress и почему их много?

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

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

Из-за этого важно периодически удалять ненужные ревизии и ограничивать их количество.

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

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

Для удаления всех ревизий выполните следующий запрос:

DELETE FROM wp_posts WHERE post_type = 'revision';

Этот запрос удалит все записи с типом revision. После удаления рекомендуется оптимизировать таблицу:

OPTIMIZE TABLE wp_posts;

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

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

Перед выполнением запросов всегда делайте резервную копию базы данных. Это позволит восстановить данные в случае ошибки.

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

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

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

  • WP-Optimize — не только удаляет ревизии, но и оптимизирует базу данных, удаляет спам и мусор. Удобный интерфейс и расписание автоматической очистки.
  • Advanced Database Cleaner — мощный инструмент для очистки базы от ревизий, черновиков, мусора, а также оптимизации таблиц.
  • Better Delete Revision — специализированный плагин для удаления ревизий без лишних функций.

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

Пример: как удалить ревизии с помощью WP-Optimize

1. Установите и активируйте плагин через админ-панель WordPress.

2. Перейдите в раздел WP-Optimize > Database.

3. Отметьте пункт «Удалить все ревизии записей».

4. Нажмите «Запустить оптимизацию».

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

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

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

define('WPABOUT_LIMIT_REVISIONS', 3);

Но стандарт WordPress не использует эту константу, поэтому для совместимости лучше использовать стандартную константу WP_POST_REVISIONS:

define('WP_POST_REVISIONS', 3);

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

Пример пользовательской функции для ограничения ревизий (wpabout_limit_revisions)

Если нужно более гибкое управление, можно добавить фильтр в файл functions.php вашей темы или в собственный плагин:

function wpabout_limit_revisions($num, $post) {
    if ($post->post_type === 'post') {
        return 3; // ограничиваем для записей
    }
    return $num; // для других типов — без ограничений
}
add_filter('wp_revisions_to_keep', 'wpabout_limit_revisions', 10, 2);

Этот код ограничит количество ревизий для постов до 3, а для других типов оставит стандартное поведение.

Как программно удалить ревизии с помощью WPAbout функций

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

function wpabout_delete_all_revisions() {
    global $wpdb;
    $deleted = $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
    if ($deleted !== false) {
        $wpdb->query("OPTIMIZE TABLE {$wpdb->posts}");
    }
    return $deleted;
}

Эту функцию можно вызывать из плагина или файла темы, либо запланировать выполнение через WP-Cron.

Пример добавления задачи WP-Cron для очистки ревизий

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

add_action('wpabout_revision_cleanup_hook', 'wpabout_delete_all_revisions');

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

Как проверить количество ревизий и оценить выгоду от удаления

Чтобы понять, сколько ревизий накопилось, можно выполнить SQL-запрос:

SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';

Если число большое (сотни или тысячи), имеет смысл очистить базу.

Также можно проверить размер таблицы wp_posts до и после оптимизации через инструменты хостинга или phpMyAdmin.

Выводы и рекомендации по работе с ревизиями

Ревизии полезны для восстановления контента, но их избыточное количество негативно влияет на производительность. Регулярная очистка и ограничение количества ревизий — обязательные меры для оптимизации WordPress сайтов.

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

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

Как отключить Gutenberg и вернуть классический редактор в WordPress
26.09.2026
Использование хуков в WordPress для расширения функциональности
17.08.2026
Автоматическое удаление старых черновиков в WordPress: практическое решение
15.09.2026
Как убрать дубли страниц в WordPress и не сломать индексацию
21.08.2026
WooCommerce: как автоматически удалять неактуальные заказы
23.08.2026