Если на сайте часто редактируют записи и страницы, ревизии быстро раздувают таблицу базы данных. WordPress сохраняет отдельную версию почти каждого изменения, и со временем это становится заметно: база растёт, резервные копии занимают больше места, а на слабом хостинге запросы к базе могут выполняться медленнее. Если задача именно в том, чтобы остановить накопление новых ревизий, это можно сделать на уровне конфигурации WordPress.
Сразу оговорюсь: полностью отключать ревизии имеет смысл не всегда. Для новостных сайтов, редакций и проектов, где контент часто правят несколько человек, ревизии полезны как страховка. Но если вы ведёте небольшой сайт, лендинги или редко обновляемый корпоративный ресурс, ограничение или отключение ревизий обычно оправдано.
Что именно делает WordPress с ревизиями
Ревизия — это сохранённая версия записи, страницы или другого типа контента, который поддерживает редактор WordPress. При каждом сохранении WordPress может создавать новую запись в базе данных. Это не кэш и не временный файл: ревизии хранятся в таблице wp_posts как отдельные записи с типом revision.
Из-за этого база постепенно растёт даже без новых публикаций. Чем чаще вы редактируете контент, тем быстрее это происходит. На практике проблема обычно заметна не сразу, а после месяцев или лет работы сайта.
Как отключить ревизии через wp-config.php
Самый прямой способ — добавить константу WP_POST_REVISIONS в файл wp-config.php. Это основной и поддерживаемый WordPress способ управлять ревизиями без правок ядра.
Перед изменением сделайте резервную копию файла wp-config.php и базы данных. Если вы ошибётесь в синтаксисе PHP, сайт может перестать открываться, а если потом решите чистить старые ревизии вручную, неосторожное удаление затронет и нужные данные.
Откройте wp-config.php и добавьте строку выше комментария /* That's all, stop editing! Happy publishing. */:
define('WP_POST_REVISIONS', false);После этого WordPress перестанет создавать новые ревизии для записей и страниц.
Если вам нужно не полное отключение, а ограничение количества версий, можно указать число вместо false. Например, так WordPress будет хранить только три последние ревизии:
define('WP_POST_REVISIONS', 3);Для многих сайтов это более практичный вариант: база не разрастается бесконечно, но возможность откатиться к нескольким предыдущим версиям остаётся.
Когда лучше ограничить ревизии, а не отключать полностью
Полное отключение подходит не всем. Если контент редактируется вручную и ошибки в тексте случаются, ревизии помогают быстро вернуть предыдущую версию без обращения к бэкапу. Поэтому в ряде случаев разумнее не убирать их совсем, а оставить небольшой лимит.
Ограничение особенно полезно, если:
- на сайте много страниц, которые регулярно обновляются;
- контент правят несколько авторов или редакторов;
- вы хотите снизить нагрузку на базу, но не потерять удобный откат;
- сайт работает на недорогом хостинге с ограниченными ресурсами.
Если же сайт почти не редактируется, а ревизии только копятся, полное отключение обычно проще и логичнее.
Как удалить уже накопившиеся ревизии
Отключение ревизий останавливает только создание новых версий. Старые записи в базе останутся, пока вы их не удалите отдельно. Это важный момент: если цель — именно уменьшить размер базы, одной строки в wp-config.php недостаточно.
Самый безопасный путь — сначала сделать полную резервную копию базы данных, а потом удалить старые ревизии через инструмент, который умеет работать именно с ними. Если у вас есть доступ к панели хостинга или phpMyAdmin, можно удалить ревизии SQL-запросом, но делать это стоит только после бэкапа и с пониманием, что вы удаляете именно версии записей, а не сами записи.
Для ручной очистки в базе обычно используют запрос к таблице wp_posts, где тип записи равен revision. Но префикс таблиц у вас может быть не wp_, а другой, поэтому слепо копировать запрос нельзя. Если вы не уверены в своих действиях, лучше использовать плагин или инструменты хостинга, где очистка ревизий выполняется через интерфейс.
После удаления старых ревизий имеет смысл оптимизировать таблицы базы данных. Это не всегда даёт большой выигрыш, но помогает вернуть часть места после массового удаления записей.
Как проверить, что ревизии действительно отключены
Проверка простая: откройте любую запись или страницу, внесите небольшое изменение и сохраните её несколько раз. Затем посмотрите блок ревизий в редакторе. Если вы указали define('WP_POST_REVISIONS', false);, новых ревизий создаваться не должно. Если задан лимит, количество сохранённых версий не должно расти бесконечно.
Ещё один признак — размер таблицы wp_posts перестаёт увеличиваться из-за новых версий контента. Это не всегда видно сразу, но после нескольких циклов редактирования разница становится заметной.
Если ревизии продолжают появляться, проверьте три вещи:
- строка добавлена именно в
wp-config.php, а не в тему или плагин; - она стоит до строки с комментарием
That's all, stop editing!; - в файле нет синтаксической ошибки, из-за которой WordPress может игнорировать изменения или не загрузиться.
Что ещё влияет на рост базы, кроме ревизий
Отключение ревизий помогает, но не решает все причины разрастания базы. Если сайт давно работает, в базе могут копиться автосохранения, временные данные плагинов, спам-комментарии, устаревшие транзиенты и служебные записи от старых расширений. Поэтому если цель — именно снизить нагрузку на базу, полезно смотреть шире, но не смешивать это с самой задачей отключения ревизий.
В рамках этой темы главное — убрать источник лишних версий записей и затем удалить уже накопленные ревизии. Это даёт понятный и контролируемый результат без вмешательства в ядро WordPress.
Если нужен более мягкий вариант, начните с лимита ревизий. Если задача жёсткая и сайт не зависит от истории правок, отключайте их полностью через wp-config.php. Это штатный способ, который работает на обычном WordPress без дополнительных плагинов и не требует правок ядра.