WordPress Notes WP24

Как отключить ревизии в WordPress и ограничить их количество

Если сайт давно живёт, а в базе уже накопились сотни ревизий записей и страниц, проблема обычно не в самих ревизиях, а в том, что они создаются без контроля. В админке это почти не видно, но в базе растёт объём таблицы wp_posts, усложняется обслуживание, а резервные копии становятся тяжелее. На небольшом сайте это терпимо, на контентном — быстро начинает мешать.

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

Когда ревизии действительно проблема

Сами по себе ревизии — штатная функция WordPress. Они сохраняются при каждом сохранении записи, страницы и некоторых типов контента. Проблема появляется, когда:

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

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

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

Самый простой способ — посмотреть количество ревизий через SQL. Если у вас есть доступ к phpMyAdmin или Adminer, выполните запрос:

SELECT post_type, COUNT(*) AS cnt
FROM wp_posts
GROUP BY post_type
ORDER BY cnt DESC;

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

SELECT ID, post_title, post_modified
FROM wp_posts
WHERE post_type = 'revision'
ORDER BY post_modified DESC
LIMIT 20;

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

Что не стоит делать до проверки

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

Что выбрать: отключение, ограничение или очистка

У этих вариантов разный смысл. Для удобства сравним их коротко.

ПодходКогда подходитКомпромисс
Полностью отключить ревизииСайт-лендинг, редкие правки, один авторНельзя откатиться к старым версиям через редактор
Ограничить количество ревизийКонтентный сайт, блог, редакцияСохраняются только последние версии
Очистить старые ревизии без изменения настройкиНужно быстро уменьшить базуПроблема вернётся, если не изменить политику сохранения

На практике чаще всего нужен второй вариант: ограничить количество и один раз удалить старый мусор из базы.

Пошаговое решение через wp-config.php

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

Отключить ревизии полностью

Добавьте строку выше комментария /* That's all, stop editing! */:

define( 'WP_POST_REVISIONS', false );

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

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

Если ревизии нужны, но в разумном количестве, задайте лимит:

define( 'WP_POST_REVISIONS', 5 );

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

Почему это лучше, чем править тему

Не стоит добавлять такую настройку в functions.php темы. При смене темы настройка потеряется. wp-config.php — правильное место для системных ограничений, которые должны работать независимо от дизайна.

Как удалить старые ревизии из базы

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

DELETE FROM wp_posts
WHERE post_type = 'revision';

Это удалит все ревизии сразу. Если нужно действовать осторожнее, сначала проверьте объём и сделайте экспорт базы. На боевом сайте лучше не запускать такие запросы без бэкапа.

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

Проверка результата после внедрения

После изменения настройки откройте запись в редакторе, несколько раз сохраните её и проверьте, появляются ли новые ревизии. Далее проверьте базу ещё раз тем же SQL-запросом:

SELECT post_type, COUNT(*) AS cnt
FROM wp_posts
GROUP BY post_type
ORDER BY cnt DESC;

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

Дополнительно можно открыть редактор записи и посмотреть блок «Ревизии» в интерфейсе. Если он исчез или показывает только ограниченное число версий, настройка сработала.

Частые ошибки и как их исправить

  • Добавили настройку не туда. Если строка в wp-config.php стоит после комментария stop editing, WordPress её не прочитает.
  • Ожидали, что старые ревизии исчезнут сами. Настройка влияет только на новые сохранения. Старые записи нужно удалять отдельно.
  • Правили functions.php активной темы. После смены темы ограничение пропадёт.
  • Удалили ревизии без бэкапа. Это риск потерять полезную историю правок, если что-то пойдёт не так.
  • Поставили слишком маленький лимит. На длинных материалах 1–2 ревизии часто недостаточно для нормальной работы редакторов.

Безопасность и производительность

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

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

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

Короткий чек-лист перед изменением настройки

  • Сделать резервную копию базы данных.
  • Проверить, сколько ревизий уже есть в wp_posts.
  • Решить, нужен ли полный запрет или лимит.
  • Добавить настройку в wp-config.php.
  • Удалить старые ревизии, если они уже накопились.
  • Проверить создание новых ревизий в редакторе.

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее