Если сайт активно наполняется, ревизии быстро раздувают таблицу базы данных. Это особенно заметно на новостных проектах, блогах и корпоративных сайтах, где редакторы часто сохраняют черновики и правки. В WordPress можно не только отключить ревизии полностью, но и ограничить их количество — это обычно более безопасный вариант, если вам нужен контроль над ростом базы без потери удобства редактирования.
Сразу скажу главное: полное отключение ревизий оправдано не всегда. Если на сайте работает один автор и публикации почти не редактируются после выхода, это допустимо. Если же контент проходит согласование, правки вносят несколько человек или вы часто откатываете изменения, лучше оставить хотя бы несколько последних версий.
Что именно делают ревизии и почему они растут
Ревизия — это сохранённая версия записи, страницы или другого типа контента. WordPress создаёт её при ручном сохранении и часто при автосохранении. В результате одна статья может накопить десятки записей в базе, особенно если над ней долго работают.
С точки зрения работы сайта это не критично, но у большого проекта появляются два практических эффекта:
- растёт размер базы данных;
- в админке и при запросах к записи появляется лишняя нагрузка, если ревизий слишком много.
На небольшом сайте это обычно не проблема. На крупном — уже повод навести порядок и заранее ограничить накопление мусора.
Как отключить ревизии через wp-config.php
Самый прямой способ — добавить константу WP_POST_REVISIONS в файл wp-config.php. Делать это нужно аккуратно: файл находится в корне сайта, и ошибка в синтаксисе может временно сломать загрузку WordPress. Перед правкой лучше сделать резервную копию.
Чтобы полностью отключить ревизии, добавьте строку перед комментарием /* That's all, stop editing! Happy publishing. */:
define( 'WP_POST_REVISIONS', false );После этого WordPress перестанет создавать новые ревизии для записей и страниц.
Если вам нужен не полный запрет, а ограничение, укажите число. Например, чтобы хранить только 5 последних ревизий:
define( 'WP_POST_REVISIONS', 5 );Это более практичный вариант для большинства сайтов: у редактора остаётся запас для отката, но база не растёт бесконтрольно.
Что важно учесть перед изменением
Константа в wp-config.php действует на весь сайт. Если вы ограничили ревизии до 5, это правило будет работать для всех записей и страниц, которые создаются после изменения. Старые ревизии при этом не удаляются автоматически — они уже лежат в базе.
Ещё один момент: автосохранение в редакторе WordPress продолжит работать. Оно не равно обычной ревизии, но в некоторых сценариях тоже создаёт временные версии. Полностью убрать поведение редактора на уровне интерфейса нельзя одной этой настройкой, и это нормально.
Как ограничить ревизии через код в теме или плагине
Если вы не хотите править wp-config.php, можно задать ограничение через код. Для этого используют фильтр wp_revisions_to_keep. Такой вариант удобен, если настройка должна зависеть от типа записи.
Например, можно оставить 3 ревизии для обычных записей и 10 для страниц:
add_filter( 'wp_revisions_to_keep', function( $num, $post ) {
if ( $post->post_type === 'page' ) {
return 10;
}
return 3;
}, 10, 2 );Этот код можно добавить в functions.php дочерней темы или в собственный плагин. Если вы вносите его в тему, помните: при смене темы настройка исчезнет. Для постоянного контроля базы надёжнее использовать мини-плагин.
Полностью отключить ревизии через фильтр тоже можно, вернув 0, но на практике чаще нужен именно лимит, а не жёсткий запрет.
Когда полное отключение оправдано, а когда лучше оставить лимит
| Сценарий | Что выбрать | Почему |
|---|---|---|
| Сайт-визитка, редкие правки | Отключить ревизии | Почти нет пользы от хранения истории, база остаётся компактнее |
| Блог или медиа с регулярной редактурой | Ограничить до 3–10 ревизий | Можно откатить ошибку, но не копить десятки версий |
| Сайт с несколькими редакторами | Оставить лимит | История правок помогает при согласовании и возврате к предыдущему тексту |
| Проект с частыми обновлениями старых материалов | Лимитировать, не отключать | Полное отключение мешает безопасно вносить правки |
Если сомневаетесь, не отключайте ревизии полностью. Лимит в 5–10 версий обычно даёт хороший баланс между безопасностью и экономией места.
Как удалить уже накопленные ревизии
Изменение настройки не очищает базу автоматически. Если на сайте уже накопились тысячи ревизий, их нужно удалить отдельно. Здесь есть риск: перед очисткой обязательно сделайте резервную копию базы данных. После удаления восстановить ревизии без бэкапа не получится.
Самый безопасный путь — использовать инструмент, который умеет чистить ревизии из базы. Если вы работаете через хостинг-панель или плагин для обслуживания сайта, ищите именно удаление revisions, а не общую очистку кэша. Вручную через SQL тоже можно, но это уже вариант для тех, кто уверенно работает с базой.
Если у вас есть доступ к WP-CLI, можно удалить ревизии командой:
wp post delete $(wp post list --post_type='revision' --format=ids) --forceКоманда удаляет все записи типа revision без отправки в корзину. Это удобно, но требует осторожности: сначала проверьте, что у вас есть свежий бэкап, и не запускайте её наугад на продакшене.
Как проверить, что настройка сработала
После изменения откройте любую запись в редакторе, внесите небольшую правку и сохраните её несколько раз. Затем проверьте блок ревизий в редакторе или откройте список версий записи. Если ревизии отключены, новые версии не должны появляться. Если задан лимит, число доступных версий должно перестать расти бесконечно и удерживаться в пределах указанного значения.
Дополнительно можно проверить базу данных: в таблице wp_posts записи с типом revision будут либо переставать появляться, либо их количество будет ограничено. Если у вас нестандартный префикс таблиц, имя будет отличаться от wp_.
Что обычно идёт не так
Чаще всего проблемы возникают из-за трёх вещей. Первая — правка не того файла: константу нужно добавлять именно в wp-config.php, а не в любой PHP-файл сайта. Вторая — код вставлен после строки /* That's all, stop editing! Happy publishing. */, где WordPress его уже не читает. Третья — ожидание, что старые ревизии исчезнут сами по себе. Нет, для этого нужна отдельная очистка базы.
Ещё одна распространённая ошибка — полное отключение ревизий на сайте, где несколько человек регулярно редактируют контент. В такой ситуации экономия места обычно не стоит потери истории изменений. Лучше ограничить количество и оставить возможность отката.
Если задача именно в том, чтобы держать базу под контролем на этапе публикации, начните с лимита в несколько ревизий. Это самый практичный вариант: он решает проблему роста базы и не ломает рабочий процесс редакторов.