Ревизии записей в WordPress — это полезная функция, позволяющая сохранять историю изменений контента. Однако с течением времени большое количество ревизий может значительно увеличить размер базы данных и замедлить работу сайта. В этой статье рассмотрим, как удалить автоматически создаваемые ревизии, оптимизировать базу данных и предотвратить избыточное их накопление.
Что такое ревизии и почему их нужно контролировать
Ревизии — это автосохраняемые версии записей и страниц, которые WordPress сохраняет при редактировании. Они позволяют откатиться к предыдущей версии, если что-то пошло не так. Но при активном создании контента и частых правках количество ревизий может вырасти до нескольких тысяч, что увеличивает нагрузку на базу данных.
Из-за этого страдает производительность сайта, увеличиваются размеры дампов базы данных, что усложняет резервное копирование и восстановление.
Поэтому важно периодически очищать ревизии и ограничивать их количество.
Как просмотреть количество ревизий для записей
В админке WordPress при редактировании записи в блоке «Документ» можно увидеть количество ревизий. Для массовой оценки можно использовать SQL-запрос:
SELECT post_parent, COUNT(*) AS revisions_count FROM wp_posts WHERE post_type = 'revision' GROUP BY post_parent ORDER BY revisions_count DESC;Он покажет, для каких записей накопилось максимальное число ревизий.
Удаление ревизий с помощью SQL-запроса
Самый быстрый способ удалить все ревизии — выполнить SQL-запрос напрямую в базе данных, например через phpMyAdmin или через WP-CLI:
DELETE FROM wp_posts WHERE post_type = 'revision';Этот запрос удалит все ревизии во всей базе. Однако такой подход не позволяет оставить последние несколько ревизий.
Чтобы удалять только старые ревизии, можно использовать более сложный запрос, но проще использовать плагины или написать функцию на PHP.
Ограничение количества ревизий через wp-config.php
Чтобы предотвратить накопление ревизий в будущем, необходимо ограничить их число. Для этого в wp-config.php добавьте строку:
define('WP_POST_REVISIONS', 3);Это ограничит количество ревизий для каждой записи тремя последними версиями.
Если хотите полностью отключить ревизии (не рекомендуется), используйте false:
define('WP_POST_REVISIONS', false);Удаление ревизий с помощью плагина WP-Optimize
Плагин WP-Optimize позволяет удобно очищать ревизии и оптимизировать базу данных без сложных запросов.
В разделе "База данных" можно выбрать очистку ревизий и настроить автоматическую периодическую оптимизацию.
Автоматическое удаление старых ревизий с помощью пользовательской функции
Если хочется более гибко контролировать процесс удаления старых ревизий, можно добавить кастомный код в файл functions.php или создать простой плагин. Например, функция ниже удалит все ревизии старше 30 дней:
function wptem_delete_old_revisions() {
global $wpdb;
$days = 30;
$wpdb->query($wpdb->prepare(
"DELETE FROM $wpdb->posts WHERE post_type = 'revision' AND post_modified < NOW() - INTERVAL %d DAY",
$days
));
}
add_action('wp_scheduled_delete', 'wptem_delete_old_revisions');Для регулярного запуска функции убедитесь, что у вас запущен WP-Cron.
Удаление ревизий для конкретных записей с помощью WP-CLI
Если у вас есть доступ к командной строке, можно использовать WP-CLI для удаления ревизий:
wp post delete $(wp post list --post_type='revision' --format=ids) --forceЭто безопасно и быстро удалит все ревизии.
Выводы и рекомендации
- Очищайте ревизии регулярно, чтобы не нагружать базу данных.
- Ограничивайте количество ревизий в
wp-config.php. - Используйте плагины, такие как WP-Optimize, для удобного управления.
- Автоматизируйте удаление старых ревизий с помощью кастомного кода или WP-CLI.
Такой подход позволит сохранить баланс между безопасностью данных и производительностью сайта.