Если база WordPress разрослась, а бэкапы стали создаваться заметно дольше, чаще всего виноваты не «тяжёлые» записи сайта, а накопившиеся ревизии, автосохранения и мусор в корзине. Это нормальные данные WordPress, но со временем они занимают место в таблице wp_posts, увеличивают объём резервных копий и могут замедлять обслуживание сайта.
Удалять здесь можно не всё подряд. Безопасная чистка — это удаление старых ревизий, автосохранений и записей из корзины, если они больше не нужны. Рабочие записи, страницы, медиафайлы и настройки трогать не стоит.
Что именно можно удалить без риска для сайта
В WordPress к «мусору» в базе обычно относят три типа данных:
- Ревизии — сохранённые версии записей и страниц. Они нужны, если вы откатываете текст или правки, но старые версии редко используются бесконечно.
- Автосохранения — временные копии, которые WordPress создаёт во время редактирования. Обычно актуально только последнее автосохранение для текущего пользователя и записи.
- Удалённые записи — то, что лежит в корзине. Пока запись в корзине, она ещё не удалена окончательно.
Именно эти данные обычно и чистят в первую очередь. Они не являются «живым» контентом сайта, но могут занимать заметный объём, особенно если редакторы часто правят длинные материалы.
С чего начать: сделайте резервную копию
Перед любой очисткой базы сделайте свежий бэкап файлов и базы данных. Это не формальность: если вы ошибётесь с запросом или удалите лишнее, откатиться без копии будет сложно.
Если сайт на общем хостинге, обычно достаточно штатного резервного копирования в панели управления или через плагин бэкапов. Если у вас есть доступ к phpMyAdmin или SSH, можно сохранить базу отдельно перед чисткой. Для больших сайтов это особенно важно: даже «безопасная» операция может неожиданно затронуть нестандартные плагины.
Как очистить ревизии и автосохранения штатными средствами
Самый простой путь — использовать плагин для обслуживания базы. Для владельца сайта это обычно безопаснее, чем писать SQL-запросы вручную, потому что интерфейс показывает, что именно будет удалено.
Если нужен именно ручной подход, можно удалить ревизии и автосохранения через SQL-запросы в phpMyAdmin. Но перед этим ещё раз проверьте префикс таблиц: у вас он может быть не wp_, а другой.
Для удаления ревизий из таблицы постов используется запрос такого вида:
DELETE FROM wp_posts WHERE post_type = 'revision';Чтобы убрать автосохранения, обычно удаляют записи с типом auto-draft не стоит путать их с черновиками. Автосохранения в WordPress чаще всего хранятся как ревизии, а не как отдельный тип контента, поэтому на практике достаточно очистки ревизий. Если вы видите в базе записи с типом revision, это и есть основной источник «раздувания».
Если вы не уверены, лучше сначала посмотреть, сколько таких записей накопилось:
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';Так вы поймёте, есть ли вообще смысл в ручной чистке и насколько большой будет эффект.
Как удалить записи из корзины
Удалённые записи и страницы в WordPress сначала попадают в корзину. Пока они там лежат, они продолжают занимать место в базе. Если контент точно не нужен, корзину можно очистить.
Через админку это делается проще всего: откройте список записей или страниц, перейдите в корзину и удалите всё окончательно. Это безопасно, если вы уверены, что ничего не понадобится восстановить.
Если нужно очистить корзину напрямую в базе, записи обычно имеют статус trash. Проверить количество можно запросом:
SELECT COUNT(*) FROM wp_posts WHERE post_status = 'trash';А удалить окончательно — так:
DELETE FROM wp_posts WHERE post_status = 'trash';После этого записи исчезнут из корзины без возможности восстановить их из админки. Поэтому сначала убедитесь, что в корзине нет нужного контента.
Когда лучше не чистить вручную
Ручное удаление через SQL подходит не всем. Если на сайте стоят плагины, которые хранят дополнительные данные, или если база давно не обслуживалась, безопаснее использовать инструмент, который понимает структуру WordPress и не трогает лишнее.
Особенно осторожным нужно быть в таких случаях:
- на сайте много авторов и редакторов, которые активно работают с черновиками;
- есть сложные типы записей, завязанные на плагины;
- вы не уверены, какой префикс таблиц используется;
- нет свежего бэкапа базы;
- сайт работает на старом хостинге, где ограничены ресурсы и любая ошибка в запросе может привести к тайм-ауту.
В таких ситуациях лучше сначала сделать копию базы и проверить чистку на тестовой копии сайта, если она есть.
Как проверить, что очистка прошла нормально
После удаления ревизий и корзины проверьте две вещи: количество записей в базе и работу админки.
Самый простой контроль — снова выполнить запросы на подсчёт:
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';
SELECT COUNT(*) FROM wp_posts WHERE post_status = 'trash';Если вы удаляли ревизии и корзину, значения должны заметно уменьшиться или стать нулевыми.
Затем откройте несколько записей в редакторе WordPress и убедитесь, что основной контент на месте. Если сайт использует классический редактор или Gutenberg, публикации должны открываться без ошибок, а опубликованные материалы — отображаться как раньше.
Ещё один практический признак — размер базы и бэкапов. После чистки резервные копии обычно создаются быстрее, особенно если до этого в базе накопились тысячи ревизий.
Что ещё можно сделать, чтобы база не разрасталась снова
Полностью остановить появление ревизий нельзя: WordPress создаёт их по умолчанию. Но можно ограничить их количество. Это полезно, если редакторы часто правят одни и те же материалы.
Ограничение задаётся в wp-config.php. Например, можно оставить только несколько последних ревизий для каждой записи:
define( 'WP_POST_REVISIONS', 5 );Это не отключает ревизии полностью, а ограничивает их число. Для большинства сайтов этого достаточно: у редактора остаётся возможность отката, но база не растёт бесконечно.
Полностью отключать ревизии стоит только если вы понимаете последствия. Без них восстановить старую версию текста будет сложнее, а на редакторских сайтах это часто неудобно и рискованно.
Практичный порядок действий
Если нужен короткий и безопасный сценарий, действуйте так:
- Сделайте резервную копию базы и файлов.
- Проверьте, сколько ревизий и записей в корзине накопилось.
- Удалите старые ревизии и очистите корзину.
- Проверьте сайт в админке и на фронтенде.
- При необходимости ограничьте число ревизий в
wp-config.php.
Такой порядок помогает уменьшить размер базы без риска затронуть рабочий контент. Для большинства сайтов именно этого достаточно, чтобы ускорить бэкапы и немного разгрузить обслуживание WordPress.