Почему стоит очищать старые версии постов (ревизии)
WordPress по умолчанию сохраняет каждое изменение записи как отдельную ревизию. Это удобно для восстановления данных, но со временем количество ревизий может существенно разрастись и замедлять работу базы данных, увеличивать её размер и влиять на производительность сайта. Особенно это заметно на больших сайтах с частым редактированием контента.
Диагностика проблемы: как проверить количество ревизий
Для оценки количества ревизий и их влияния на базу можно выполнить SQL-запрос напрямую в phpMyAdmin или через WP CLI:
SELECT post_type, COUNT(*) as revisions_count FROM wp_posts WHERE post_type = 'revision' GROUP BY post_type;Или используя WP CLI:
wp post list --post_type=revisions --format=ids | wc -w<Если число ревизий превышает несколько тысяч, стоит задуматься об их очистке.
Пошаговое удаление старых ревизий в WordPress
1. Создание резервной копии базы данных
Перед любыми операциями с базой данных сделайте резервную копию. Это даст гарантию, что вы сможете восстановить данные в случае ошибки.
2. Удаление ревизий через SQL-запрос
Самый простой и быстрый способ очистить ревизии — выполнить следующий запрос в phpMyAdmin или через WP CLI:
DELETE FROM wp_posts WHERE post_type = 'revision';Этот запрос удаляет все ревизии из базы. Если хотите удалить только ревизии старше определённого времени, можно использовать, например:
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < DATE_SUB(NOW(), INTERVAL 30 DAY);3. Ограничение количества ревизий в будущем
Чтобы предотвратить накопление большого числа ревизий, добавьте в wp-config.php следующую строку:
define('WP_POST_REVISIONS', 3);Это ограничит число сохраняемых ревизий до 3 на каждую запись.
4. Очистка избыточных метаданных ревизий
Некоторые плагины и темы могут сохранять метаданные для ревизий. Для очистки можно использовать WP-CLI:
wp post meta delete $(wp post list --post_type=revision --format=ids) _some_meta_keyЗамените _some_meta_key на конкретный ключ метаданных, если известен.
Проверка результата после удаления ревизий
Повторите первоначальный запрос:
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';Он должен вернуть 0 или число ревизий, не превышающее заданный лимит (если применяли ограничение в wp-config.php).
Проверьте работу сайта, особенно редактора постов, чтобы убедиться, что всё функционирует корректно.
Частые ошибки и как их исправить
- Удаление ревизий без резервной копии. Решение: всегда делайте бэкап базы перед такими операциями.
- Ошибки в SQL-запросах из-за префикса таблиц. Проверьте префикс
wp_в вашей базе и исправьте запросы соответственно. - Проблемы с правами доступа при использовании WP CLI. Запускайте команды от пользователя с нужными правами или через sudo.
- Неправильное значение константы
WP_POST_REVISIONS. Значение должно быть целым числом, 0 для отключения ревизий или положительным числом для ограничения.
Практические советы по безопасности и производительности
- Ограничение ревизий снижает нагрузку на базу и ускоряет резервное копирование.
- Регулярно планируйте очистку ревизий, например, с помощью WP-Cron или внешних скриптов.
- Используйте плагин Clearfy Pro (https://wpshop.ru/plugins/clearfy?utm_source=wpcheck.ru&utm_medium=article&utm_campaign=kak-udalit-starye-variacii-postov-v-wordpress-bez-poteri-dannyh) для управления ревизиями и общей оптимизации базы.
- После удаления ревизий запустите оптимизацию таблиц базы данных (через phpMyAdmin или WP CLI):
OPTIMIZE TABLE wp_posts;Сравнение способов удаления ревизий
| Метод | Преимущества | Недостатки |
|---|---|---|
| SQL-запрос | Быстро, без сторонних плагинов | Требует доступа к базе и аккуратности |
| WP-CLI | Автоматизация, безопасность, можно скриптовать | Требует навыков работы с консолью |
| Плагин (например, Clearfy) | Удобный интерфейс, дополнительные функции | Дополнительная нагрузка на сайт, может быть платным |