
Как удалить старые версии WordPress: 4 шага
База WordPress раздулась, админка тормозит, а бэкап весит как архив среднего сайта? Скорее всего, виноваты ревизии, черновики каждого сохранения, которые движок копит годами.
Одна страница за время жизни набирает десятки правок. Умножьте на сотни постов, и получите гигабайты мусора в wp_posts. Хуже того: ревизии хранятся в той же таблице, что и опубликованный контент, поэтому каждая лишняя запись замедляет запросы.
Ниже, четыре способа почистить базу от старых версий: от безопасного плагина до прямого SQL. Плюс бонусный приём, который не даст revision-мусору вернуться.
💡 Быстрый обзор:
- WP-Sweep, самый безопасный путь: плагин удаляет ревизии штатными функциями WordPress, без прямых запросов к базе.
- wp-config.php, три строки кода полностью отключают или ограничивают сохранение черновиков на уровне движка.
- SQL-запрос, мгновенная зачистка одним запросом; требует полного бэкапа базы перед запуском.
- Интервал автосохранения, не удаляет уже накопленное, но радикально замедляет прирост ревизий в будущем.
Шаг 1: Удалить ревизии плагином WP-Sweep
Самый простой и безопасный способ для тех, кто не хочет трогать код. WP-Sweep вызывает штатные функции WordPress (wp_delete_post_revision), плагин не пишет сырые запросы, поэтому риск повредить базу минимален.

Установка, стандартная:
- Перейдите в Плагины → Добавить новый.
- Найдите WP-Sweep, нажмите Установить и Активировать.
- Откройте Инструменты → Sweep.
- Найдите строку Revisions и нажмите кнопку Sweep.
Плагин покажет, сколько ревизий удалено и сколько места освобождено. Кроме ревизий WP-Sweep умеет чистить спам-комментарии, черновики автосохранения, неиспользуемые термины таксономий и мета-поля-сироты, всё через родное API WordPress.
Шаг 2: Отключить ревизии через wp-config.php
Если ревизии не нужны в принципе, отключите их одной строкой. Найдите в корне сайта файл wp-config.php и добавьте код **до строки **/* That's all, stop editing! */:
1 define( 'WP_POST_REVISIONS', false );

После этого WordPress перестанет сохранять черновики при каждом автосохранении и нажатии «Обновить». В базе останется только последняя версия поста.
Обратите внимание: уже накопленные ревизии эта строка не удаляет, она лишь предотвращает появление новых. Существующий мусор чистите Шагом 1 или бонусным SQL-запросом ниже.
Чтобы снова включить ревизии, замените false на true или просто удалите строку.
Шаг 3: Ограничить количество ревизий
Полное отключение подходит не всем. Если редакция из трёх человек правит один пост и нужна история изменений, лучше не выключать ревизии, а ограничить их число.
Добавьте в wp-config.php перед строкой /* That's all, stop editing! */:
1 define( 'WP_POST_REVISIONS', 3 );
Число 3 означает: WordPress хранит максимум три последние версии каждого поста. Четвёртая редакция затрет самую старую, база не разрастётся.

Для большинства сайтов трёх ревизий хватает с запасом. Если публикуете длинные лонгриды с десятками итераций, поставьте 5 или 10. Ограничения нет, можно указать любое целое число.
Шаг 4: Изменить интервал автосохранения
По умолчанию WordPress сохраняет черновик каждые 60 секунд. При активной работе над постом это создаёт десятки ревизий за час. Интервал можно раздвинуть, тогда автосохранений станет меньше, а база будет расти медленнее.
Добавьте в wp-config.php:
1 define( 'AUTOSAVE_INTERVAL', 600 );

Значение 600, это секунды (10 минут). При такой настройке черновик пишется в базу раз в 10 минут вместо каждой минуты. Минимум, который принимает WordPress, 60 секунд; рекомендуемый максимум, 3600 (час).
Этот приём не чистит существующие ревизии, но радикально сокращает прирост новых. Комбинируйте его с лимитом из Шага 3, получите чистую базу без регулярной ручной зачистки.
Бонус: удаление ревизий SQL-запросом напрямую
Самый быстрый путь, если чистка плагином по каким-то причинам не подходит. Внимание: запрос необратим. Перед запуском сделайте полный бэкап базы данных, через phpMyAdmin, WP-CLI или плагин резервного копирования.
Сначала, безопасный dry-run: посмотрите, сколько ревизий будет затронуто, не удаляя их:
1 SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';
Если префикс таблиц у вас не wp_, замените на свой (посмотрите в wp-config.php, строка $table_prefix).
Когда убедились, что цифра адекватная, выполняйте удаление:
1 DELETE FROM wp_posts WHERE post_type = 'revision';
Запрос удаляет все ревизии со всех постов одним махом. После этого база станет легче мгновенно, особенно на старых сайтах с сотнями страниц.
Что запрос не трогает: опубликованные посты, черновики (post_status='draft'), страницы, вложения, меню, корзину. Он целится строго в записи с post_type='revision', движок использует этот тип только для хранения версий.
⁉️🤔 Частые вопросы
Ревизии точно не влияют на скорость сайта?
Влияют, но косвенно. Сами ревизии не грузятся на фронте, они лежат в
wp_postsи увеличивают общий размер таблицы. На сайте с 10 000+ записей каждая лишняя тысяча строк замедляет запросыWP_Query, особенно если нет объектного кэша (Redis). После чистки ревизий разница заметна в админке и при сохранении постов.
Безопасно ли удалять ревизии плагином?
WP-Sweep безопасен именно потому, что не пишет сырые SQL-запросы. Он дёргает
wp_delete_post_revision(), ту же функцию, которую WordPress вызывает при штатном удалении черновика. Тем не менее правило «сделай бэкап перед любой операцией с базой» никто не отменял.
Что будет с автосохранениями после отключения ревизий?
Автосохранения продолжат работать, они технически отдельный механизм. WordPress хранит один автосейв на пост (последний), и он перезаписывается, а не копится. Отключение ревизий через
WP_POST_REVISIONSна автосохранения не влияет. А вот изменениеAUTOSAVE_INTERVAL, напрямую управляет ими.
Можно ли удалить ревизии только для определённых типов постов?
Да, через фильтр
wp_revisions_to_keep. Добавьте вfunctions.phpтемы или в Code Snippets:
1 add_filter( 'wp_revisions_to_keep', function( $num, $post ) { 2 if ( 'product' === $post->post_type ) { 3 return 0; // не хранить ревизии товаров WooCommerce 4 } 5 return $num; 6 }, 10, 2 );
Этот код отключает ревизии только для товаров, оставляя стандартное поведение для постов и страниц. Для массового удаления уже накопленных ревизий конкретного типа, только SQL с условием по
post_parent.
Perfmatters** заменяет WP-Sweep?**
Perfmatters, коммерческий плагин производительности, и управление ревизиями там лишь одна из 40+ функций. Он умеет ограничивать число ревизий (аналог
WP_POST_REVISIONS) и чистить их по расписанию. Но если нужна только чистка ревизий, WP-Sweep полностью бесплатен и справляется не хуже. Perfmatters имеет смысл брать, когда параллельно нужны отложенная загрузка, отключение эмодзи-скриптов и другие тонкие настройки производительности.
Нужно ли чистить ревизии на новом сайте?
На свежем сайте с десятком постов ревизии занимают килобайты, смысла в чистке нет. Но заведите привычку: если планируете вести блог активно, поставьте лимит
WP_POST_REVISIONSв 3-5 прямо сейчас. Потом не придётся разбирать завалы.
Что ставить под вашу задачу?
Короткая матрица:
- Хотите безопасно и быстро, без кода → WP-Sweep (Шаг 1) + ограничение ревизий до 3 (Шаг 3).
- Ревизии не нужны вообще, работаете один → отключите через
WP_POST_REVISIONS, false(Шаг 2). - **База огромная, плагин тормозит на **хостинге → SQL-запрос из бонусного раздела (строго после бэкапа).
- Уже чисто, хотите сохранить порядок → лимит ревизий 3-5 (Шаг 3) + интервал автосохранения 300-600 секунд (Шаг 4).
Потратьте пять минут сейчас, и база больше не будет раздуваться годами. А если после чистки ревизий сайт всё ещё тормозит, проверьте другие способы ускорить WordPress: кэширование запросов и легковесная тема часто дают больший прирост, чем удаление ревизий.



