WPExperts

Как удалить лишние ревизии записей в WordPress и ограничить их создание

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

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

Что такое ревизии и когда их действительно слишком много

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

Понять, что ревизий уже слишком много, можно по нескольким признакам:

  • база данных заметно выросла без явной причины;
  • резервные копии стали создаваться дольше;
  • на хостинге с ограничениями по диску или I/O сайт начал работать менее стабильно;
  • в админке у старых записей видно много версий, которыми никто не пользуется.

Сам по себе факт наличия ревизий не проблема. Удалять их имеет смысл, когда вы понимаете, что храните слишком много истории и не используете её в работе.

Сначала сделайте резервную копию

Перед очисткой базы данных нужен свежий бэкап. Это не формальность: если удалить не то или ошибиться в SQL-запросе, восстановление будет только из копии. Особенно это важно, если вы работаете напрямую через phpMyAdmin, Adminer или SSH.

Если сайт на продакшене, не запускайте очистку «на глаз» без возможности отката. Для небольшого сайта достаточно штатного бэкапа хостинга или копии через плагин резервного копирования. Для более крупного проекта лучше иметь отдельную выгрузку базы перед чисткой.

Как удалить лишние ревизии в WordPress

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

Удаление через плагин

Самый безопасный путь для владельца сайта без технического опыта — использовать плагин, который умеет чистить ревизии и другие служебные данные. Такой вариант удобен тем, что не требует ручного SQL и снижает риск ошибки. Если вам нужен не только разовый запуск, но и регулярная профилактика, это обычно самый практичный вариант.

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

Удаление через SQL-запрос

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

Для стандартной установки WordPress запрос выглядит так:

DELETE FROM wp_posts WHERE post_type = 'revision';

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

Удаление через WP-CLI

Если на хостинге доступен WP-CLI, это удобный способ для разработчика или администратора. Команда удаляет ревизии штатным механизмом WordPress и подходит для массовой очистки без ручной работы в phpMyAdmin.

Используйте команду:

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

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

Как ограничить создание ревизий в WordPress

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

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

Самый понятный и предсказуемый способ — задать лимит на количество ревизий для сайта. Для этого в файле wp-config.php добавляют константу WP_POST_REVISIONS.

Например, чтобы хранить не больше 5 ревизий для каждой записи, добавьте строку:

define( 'WP_POST_REVISIONS', 5 );

Если поставить значение true, WordPress будет хранить ревизии без ограничения. Если поставить false, ревизии будут отключены полностью. На практике полный запрет подходит не всем: для редакционного сайта это может быть неудобно, потому что вы потеряете удобный откат к предыдущим версиям. Поэтому чаще всего разумнее ограничить число ревизий, а не выключать их совсем.

Добавлять эту строку нужно до строки /* That's all, stop editing! Happy publishing. */. После сохранения файла новые записи начнут создавать ревизии уже с учётом лимита.

Отключить ревизии только для части сайта

Если у вас есть типы контента, где история правок не нужна, можно ограничивать ревизии точечно через код темы или мини-плагин. Но это уже решение для разработчика: оно требует понимания, какие типы записей используются на сайте и как именно они регистрируются.

Для большинства сайтов проще и надёжнее задать общий лимит через wp-config.php. Это меньше зависит от темы и не ломается при обновлении.

Что ещё стоит проверить после очистки

После удаления ревизий полезно убедиться, что результат действительно есть. Самый простой способ — открыть базу данных и посмотреть, уменьшилось ли число строк с post_type = 'revision'. Если вы использовали плагин, он обычно показывает количество удалённых записей до и после очистки.

Также имеет смысл проверить:

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

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

Когда ревизии лучше не отключать полностью

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

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

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

×
Твой WordPress — твои правила!

Топовые темы и плагины со скидкой 20%.

Забрать выгодно ⋙