Если сайт на WordPress начал заметно тяжелее работать, а база данных разрослась без видимой причины, одна из частых причин — большое количество ревизий записей и страниц. WordPress сохраняет версии контента автоматически, и это удобно, пока ревизий не становится слишком много. Тогда они начинают занимать место в базе, усложняют обслуживание и могут добавлять лишнюю нагрузку на запросы к MySQL.
Решение обычно состоит из двух частей: сначала удалить уже накопившиеся лишние ревизии, затем ограничить их создание на будущее. Делать это лучше аккуратно, потому что ревизии иногда реально помогают вернуть текст после неудачного редактирования.
Что такое ревизии и почему их становится слишком много
Ревизия в WordPress — это сохранённая версия записи, страницы или другого типа контента, который поддерживает редактор. Система создаёт их автоматически при сохранении и обновлении материала. Для автора это полезно: можно откатиться к предыдущему варианту текста, сравнить изменения и восстановить нужный фрагмент.
Проблема начинается, когда на сайте много правок, а ревизии не ограничены. Например, редакторы несколько раз в день правят длинные статьи, а WordPress сохраняет каждую промежуточную версию. В базе появляются тысячи строк в таблице wp_posts, где ревизии хранятся как отдельные записи с типом revision. На небольшом сайте это может быть незаметно, но на контентном проекте или старом сайте база быстро раздувается.
Само по себе наличие ревизий не ошибка. Удалять их полностью бездумно не стоит. Задача обычно другая: оставить разумный запас версий и убрать старый мусор, который уже не нужен.
Сначала проверьте, действительно ли ревизий слишком много
Перед очисткой полезно понять масштаб проблемы. Если у вас есть доступ к phpMyAdmin или другому инструменту работы с MySQL, можно посмотреть количество ревизий напрямую. Это не обязательно, но помогает оценить, насколько агрессивной должна быть очистка.
Для проверки можно выполнить такой запрос:
SELECT COUNT(*) AS revisions_count FROM wp_posts WHERE post_type = 'revision';Если префикс таблиц у вас не wp_, подставьте свой. Запрос покажет общее число ревизий во всей базе. Если счёт идёт на тысячи или десятки тысяч, очистка уже имеет смысл.
Ещё один практический признак — большой размер таблицы wp_posts и медленная работа админки при редактировании материалов. Но важно понимать: не всегда виноваты только ревизии. Иногда нагрузку создают плагины, тяжёлые запросы или проблемы с хостингом. Поэтому ревизии стоит рассматривать как один из факторов, а не как универсальную причину всех тормозов.
Как удалить лишние ревизии записей
Перед любой массовой очисткой сделайте резервную копию базы данных. Это не формальность: если удалить не то или очистка прервётся, восстановить данные без бэкапа будет сложно. Особенно это важно на живом сайте, где контент обновляется ежедневно.
Способ через SQL-запрос
Если у вас есть доступ к базе данных, самый прямой способ — удалить записи типа revision из таблицы постов. Запрос выглядит так:
DELETE FROM wp_posts WHERE post_type = 'revision';После этого ревизии исчезнут из базы. Но на практике обычно нужно ещё удалить связанные метаданные, которые могли остаться в wp_postmeta. WordPress сам не всегда чистит всё идеально, особенно если база уже долго жила и в ней были сторонние плагины.
Чтобы убрать метаданные, связанные с удалёнными ревизиями, обычно используют следующий подход: сначала удалить ревизии, затем проверить, не осталось ли «сиротских» записей в метаданных. Универсального безопасного запроса для всех случаев нет, потому что структура и объём данных зависят от сайта. Если вы не уверены в SQL, лучше использовать специализированный инструмент очистки или плагин, который умеет работать с ревизиями.
Способ через WP-CLI
Если на хостинге доступен WP-CLI, очистка обычно проходит удобнее и безопаснее, чем вручную через SQL. В WordPress есть команда для удаления ревизий:
wp post delete $(wp post list --post_type='revision' --format=ids) --forceКоманда сначала получает список ID всех ревизий, затем удаляет их без отправки в корзину. Это важно: ревизии не нужно «удерживать» в корзине, иначе вы просто переносите мусор в другое место.
Но здесь есть практическое ограничение. Если ревизий очень много, команда может упереться в лимиты оболочки или времени выполнения. В таком случае лучше удалять их порциями или использовать более специализированный инструмент, который умеет работать пакетно. Если вы не уверены в доступности WP-CLI на вашем хостинге, не тратьте время на попытки — проще очистить базу через админку или плагин.
Способ через плагин очистки базы
Для владельца сайта без технического опыта это часто самый удобный вариант. Плагин показывает, сколько ревизий найдено, и позволяет удалить их из интерфейса WordPress. Плюс такого подхода в том, что не нужно вручную писать SQL и рисковать ошибкой в запросе.
Если вы уже используете инструменты для оптимизации и чистки сайта, имеет смысл делать это в одном месте, а не собирать набор разрозненных решений. Например, в Clearfy Pro есть функции для удаления лишнего мусора и оптимизации WordPress, включая работу с ревизиями. Это не обязательный путь, но он удобен, если вам нужен именно регулярный уход за сайтом, а не разовая ручная чистка.
Как ограничить создание ревизий в WordPress
Удалить старые ревизии полезно, но без ограничения они снова накопятся. Самый надёжный способ — задать лимит в wp-config.php. Это системный файл WordPress, и именно там задаются параметры, которые должны работать на всём сайте.
Добавьте строку до комментария /* That's all, stop editing! Happy publishing. */:
define( 'WP_POST_REVISIONS', 5 );В этом примере WordPress будет хранить не больше пяти ревизий на каждую запись. Когда создаётся новая версия, самая старая из сохранённых ревизий будет вытесняться. Это хороший компромисс для большинства сайтов: остаётся запас на откат, но база не раздувается бесконечно.
Если поставить значение 0, ревизии будут отключены. Технически это возможно, но для обычного сайта я так делать не советую. Без ревизий любой неудачный редактируемый текст, случайное удаление блока или ошибка редактора становятся проблемой. Лучше ограничить количество, чем отключать функцию полностью.
Если нужно оставить только автосохранение без постоянного накопления версий, одного лимита иногда достаточно. Но помните: автосохранение и ревизии — не одно и то же. WordPress всё равно будет сохранять промежуточные данные редактора, а поведение зависит от версии WordPress и сценария редактирования.
Когда лучше ограничивать ревизии через код, а когда через плагин
| Способ | Когда подходит | Что важно учесть |
|---|---|---|
wp-config.php | Нужен стабильный лимит на всём сайте | Работает на уровне WordPress, не зависит от темы и большинства плагинов |
| Плагин очистки | Нужно быстро убрать мусор и не лезть в код | Подходит для разовой или регулярной уборки, но не заменяет настройку лимита |
| SQL / WP-CLI | Есть доступ к серверу и нужен точный контроль | Требует аккуратности и бэкапа, особенно на больших сайтах |
На практике лучший вариант обычно такой: один раз удалить старые ревизии, затем ограничить их количество через wp-config.php. Если сайт активно редактируется, периодически проверяйте, не выросла ли база снова. Это проще, чем потом разбирать десятки тысяч накопленных записей.
Как проверить, что всё работает правильно
После настройки откройте любую запись или страницу, внесите несколько изменений и сохраните их несколько раз. Затем откройте блок ревизий в редакторе. Если лимит задан, старые версии должны постепенно вытесняться, а количество сохранённых ревизий не должно расти бесконечно.
Для проверки базы можно снова выполнить SQL-запрос на подсчёт ревизий через некоторое время. Если сайт активно редактируется, число будет расти, но уже в пределах установленного лимита на каждую запись. Это нормальное поведение.
Если ревизии продолжают множиться без ограничений, проверьте три вещи: действительно ли строка добавлена в wp-config.php, нет ли синтаксической ошибки в файле и не переопределяет ли поведение другой код в functions.php или в плагине. На некоторых хостингах также могут быть особенности кэширования или нестандартная конфигурация, но в обычной установке WordPress достаточно именно wp-config.php.
Что ещё стоит учесть перед очисткой
Не удаляйте ревизии наугад, если на сайте работают несколько редакторов и кто-то регулярно возвращается к старым версиям. В этом случае лучше сначала договориться о лимите, который устроит команду. Для новостного сайта или блога с частыми правками пять ревизий обычно достаточно. Для длинных экспертных материалов иногда разумно оставить больше.
Также не стоит путать ревизии с черновиками и автосохранениями. Черновик — это отдельный объект контента, а ревизия — версия уже существующей записи. Если вы удаляете ревизии, черновики не исчезают, но и не нужно рассчитывать, что они заменяют полноценную историю изменений.
Если база уже сильно разрослась, после очистки полезно проверить общую оптимизацию таблиц. Но это отдельный шаг, и делать его стоит только если вы понимаете, что именно оптимизируете и есть ли у хостинга ограничения на такие операции. В большинстве случаев для решения проблемы с ревизиями достаточно удалить старое и задать лимит на будущее.