Skip to content

Всё для WordPress, веб-разработки — и не только

Как удалить старые версии WordPress: 4 шага

Как удалить старые версии 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, удаление ревизий

Установка, стандартная:

  • Перейдите в Плагины → Добавить новый.
  • Найдите WP-Sweep, нажмите Установить и Активировать.
  • Откройте Инструменты → Sweep.
  • Найдите строку Revisions и нажмите кнопку Sweep.

Плагин покажет, сколько ревизий удалено и сколько места освобождено. Кроме ревизий WP-Sweep умеет чистить спам-комментарии, черновики автосохранения, неиспользуемые термины таксономий и мета-поля-сироты, всё через родное API WordPress.

🔗 WP-Sweep на WordPress.org

Шаг 2: Отключить ревизии через wp-config.php

Если ревизии не нужны в принципе, отключите их одной строкой. Найдите в корне сайта файл wp-config.php и добавьте код **до строки **/* That's all, stop editing! */:

1define( 'WP_POST_REVISIONS', false );
Код отключения ревизий в файле wp-config.php

После этого WordPress перестанет сохранять черновики при каждом автосохранении и нажатии «Обновить». В базе останется только последняя версия поста.

Обратите внимание: уже накопленные ревизии эта строка не удаляет, она лишь предотвращает появление новых. Существующий мусор чистите Шагом 1 или бонусным SQL-запросом ниже.

Чтобы снова включить ревизии, замените false на true или просто удалите строку.

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

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

Добавьте в wp-config.php перед строкой /* That's all, stop editing! */:

1define( 'WP_POST_REVISIONS', 3 );

Число 3 означает: WordPress хранит максимум три последние версии каждого поста. Четвёртая редакция затрет самую старую, база не разрастётся.

Ограничение количества ревизий цифрой 3 в wp-config.php

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

Шаг 4: Изменить интервал автосохранения

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

Добавьте в wp-config.php:

1define( 'AUTOSAVE_INTERVAL', 600 );
Установка интервала автосохранения 600 секунд в wp-config.php

Значение 600, это секунды (10 минут). При такой настройке черновик пишется в базу раз в 10 минут вместо каждой минуты. Минимум, который принимает WordPress, 60 секунд; рекомендуемый максимум, 3600 (час).

Этот приём не чистит существующие ревизии, но радикально сокращает прирост новых. Комбинируйте его с лимитом из Шага 3, получите чистую базу без регулярной ручной зачистки.

Бонус: удаление ревизий SQL-запросом напрямую

Самый быстрый путь, если чистка плагином по каким-то причинам не подходит. Внимание: запрос необратим. Перед запуском сделайте полный бэкап базы данных, через phpMyAdmin, WP-CLI или плагин резервного копирования.

Сначала, безопасный dry-run: посмотрите, сколько ревизий будет затронуто, не удаляя их:

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

Если префикс таблиц у вас не wp_, замените на свой (посмотрите в wp-config.php, строка $table_prefix).

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

1DELETE 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:

1add_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: кэширование запросов и легковесная тема часто дают больший прирост, чем удаление ревизий.