В WordPress каждый раз при сохранении записи создаётся новая ревизия. Это удобно для восстановления предыдущих версий, но со временем количество ревизий может сильно разрастись и замедлить работу сайта, увеличить базу данных. В этой статье разберём, как удалить старые ревизии эффективно с помощью популярных плагинов и собственных функций, а также как настроить автоматическую очистку.
Что такое ревизии записей в WordPress и почему важно их удалять
Ревизии — это копии записей и страниц, которые WordPress сохраняет при каждом обновлении. Они позволяют откатиться к предыдущей версии контента, что очень полезно при ошибках или случайном удалении текста.
Но если не контролировать количество ревизий, в базе данных накапливается огромное количество ненужных записей, что приводит к:
- увеличению размера базы данных;
- замедлению запросов к базе;
- увеличению времени резервного копирования;
- падению производительности сайта.
Поэтому регулярное удаление старых ревизий — важная часть поддержки WordPress сайтов.
Удаление ревизий с помощью плагинов
Плагин WP-Optimize
WP-Optimize — универсальный инструмент для очистки и оптимизации базы данных. Он позволяет удалять ревизии, спам-комментарии, черновики и многое другое.
Чтобы удалить ревизии:
- Установите и активируйте WP-Optimize.
- Перейдите в меню WP-Optimize → Database.
- Выберите пункт «Clean all post revisions» (Удалить все ревизии записей).
- Нажмите «Run optimization» для запуска очистки.
WP-Optimize также умеет планировать регулярную очистку базы данных, что избавит вас от необходимости делать это вручную.
Плагин Advanced Database Cleaner
Advanced Database Cleaner — ещё один мощный инструмент для очистки базы. Он позволяет детально управлять типами данных, которые вы хотите удалить, включая ревизии.
Преимущества:
- Фильтрация ревизий по возрасту;
- Оптимизация таблиц после очистки;
- Планировщик задач;
- Удобный интерфейс.
Для удаления ревизий:
- Установите и активируйте Advanced Database Cleaner.
- В разделе Database Cleanup выберите Revisions и задайте фильтр по дате, если нужно.
- Запустите очистку.
Удаление ревизий через пользовательский код
Если вы хотите быстро очистить ревизии одной функцией, можете использовать следующий код. Добавьте его в файл functions.php вашей темы или в отдельный плагин:
function wpmentor_delete_post_revisions() {
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
}
// Запускаем удаление один раз
wpmentor_delete_post_revisions();Этот код удалит все ревизии из базы данных. Не забудьте удалить или закомментировать вызов функции после выполнения, чтобы не запускать её на каждом запросе.
Удаление ревизий старше определённого времени
Иногда нужно оставить свежие ревизии, удаляя только старые. Для этого можно использовать такой код:
function wpmentor_delete_old_revisions( $days = 30 ) {
global $wpdb;
$date = date( 'Y-m-d H:i:s', strtotime( "-{$days} days" ) );
$wpdb->query(
$wpdb->prepare(
"DELETE FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_modified < %s",
$date
)
);
}
// Удаляем ревизии старше 30 дней
wpmentor_delete_old_revisions(30);Такой подход поможет сохранить последние версии записей и очистить только устаревшие ревизии.
Как ограничить количество ревизий в WordPress
Чтобы в будущем не накапливалось слишком много ревизий, можно ограничить их количество. Для этого добавьте в wp-config.php следующую строку:
define('WP_POST_REVISIONS', 5);Здесь число 5 означает, что будет храниться не более 5 ревизий одной записи. Можно указать любое другое значение или установить false, чтобы отключить ревизии вовсе (не рекомендуется).
Если вы используете плагин Clearfy Pro, он позволяет управлять ревизиями через удобный интерфейс без правок кода. Подробнее — на странице плагина.
Автоматизация удаления ревизий через WP-Cron
Для регулярной автоматической очистки ревизий можно добавить задачу в WP-Cron. Пример кода:
function wpmentor_schedule_revisions_cleanup() {
if ( ! wp_next_scheduled( 'wpmentor_cleanup_revisions_event' ) ) {
wp_schedule_event( time(), 'daily', 'wpmentor_cleanup_revisions_event' );
}
}
add_action( 'wp', 'wpmentor_schedule_revisions_cleanup' );
function wpmentor_cleanup_revisions_callback() {
wpmentor_delete_old_revisions(30); // удаляем ревизии старше 30 дней
}
add_action( 'wpmentor_cleanup_revisions_event', 'wpmentor_cleanup_revisions_callback' );Этот код создаст ежедневное задание, которое будет удалять ревизии старше 30 дней. Так вы всегда будете поддерживать базу данных в оптимальном состоянии.
Заключение
Удаление ревизий записей — важный шаг для оптимизации производительности сайта на WordPress. Вы можете использовать готовые плагины, такие как WP-Optimize или Advanced Database Cleaner, либо внедрить собственные функции на PHP. Также рекомендуется ограничить количество ревизий и автоматизировать очистку через WP-Cron.
Если хотите более удобные инструменты для управления оптимизацией, загляните в каталог решений WPSHOP. Там есть много полезных плагинов для поддержки и развития сайта на WordPress.