Ревизии постов в WordPress — это полезная функция, которая позволяет сохранять предыдущие версии ваших записей и страниц. Однако со временем количество ревизий может значительно вырасти, что приводит к увеличению размера базы данных и замедлению работы сайта. В этой статье разберём, как автоматизировать удаление ревизий, чтобы поддерживать базу данных в оптимальном состоянии.
Почему важно удалять ревизии в WordPress
Каждый раз при сохранении записи WordPress создаёт её ревизию. При активном ведении блога или сайта с частыми обновлениями количество ревизий может достигать сотен или даже тысяч. Это негативно влияет на производительность базы данных:
- Увеличивается размер таблицы
wp_posts. - Замедляется работа запросов к базе.
- Резервное копирование занимает больше времени и места.
Удаление старых ревизий помогает снизить нагрузку и ускорить работу сайта, особенно на хостингах с ограниченными ресурсами.
Ручное удаление ревизий через SQL-запрос
Если у вас нет доступа к плагинам или вы предпочитаете работать напрямую с базой данных, можно удалить ревизии через SQL-запрос. Для этого подключитесь к phpMyAdmin или используйте любой другой инструмент для работы с базой и выполните запрос:
DELETE FROM wp_posts WHERE post_type = 'revision';Этот запрос удалит все ревизии, но будьте осторожны — лучше сделать резервную копию базы перед выполнением.
Автоматизация удаления ревизий с помощью WPONE Cron
Чтобы регулярно очищать ревизии, можно написать собственную функцию и запланировать её выполнение через WP-Cron. Пример функции для удаления ревизий:
function wpone_delete_old_revisions() {
global $wpdb;
$days = 30; // удалять ревизии старше 30 дней
$wpdb->query( $wpdb->prepare(
"DELETE FROM $wpdb->posts WHERE post_type = 'revision' AND post_date < NOW() - INTERVAL %d DAY",
$days
));
}
// Создаём событие при активации темы или плагина
if ( ! wp_next_scheduled( 'wpone_daily_revision_cleanup' ) ) {
wp_schedule_event( time(), 'daily', 'wpone_daily_revision_cleanup' );
}
// Подписываем функцию на событие
add_action( 'wpone_daily_revision_cleanup', 'wpone_delete_old_revisions' );Такой код удалит ревизии старше 30 дней один раз в сутки. Можно изменить интервал и условия под свои задачи.
Использование плагинов для удаления ревизий
Если не хочется писать код, существуют готовые решения:
- Clearfy Pro — популярный плагин для оптимизации WordPress, который позволяет удалять ревизии и другие ненужные данные базы одним кликом.
- WP Optimize — бесплатный плагин с функцией очистки ревизий, кэширования и оптимизации базы.
- Advanced Database Cleaner — плагин, направленный на детальную очистку базы, включая ревизии, автосохранения и многое другое.
Для примера рассмотрим настройку Clearfy Pro. После установки и активации перейдите в раздел «Оптимизация» и активируйте опцию удаления ревизий. Можно настроить автоматическую очистку по расписанию.
Ограничение количества ревизий в WordPress
Помимо удаления старых ревизий полезно ограничить их количество, чтобы WordPress не создавал слишком много копий. Для этого добавьте в wp-config.php строку:
define('WP_POST_REVISIONS', 5); // хранить не более 5 ревизий на записьЭто позволит сохранять максимум 5 ревизий для каждой записи, остальные будут автоматически удаляться.
Создание функции для ограничения ревизий с фильтром WPONE
Если хотите более гибко контролировать ревизии, можно написать функцию с фильтром:
function wpone_limit_post_revisions( $num, $post ) {
// Ограничиваем ревизии для страниц 3 штуками, для остальных — 5
if ( $post->post_type === 'page' ) {
return 3;
}
return 5;
}
add_filter( 'wp_revisions_to_keep', 'wpone_limit_post_revisions', 10, 2 );Такой подход позволяет задать разное количество ревизий в зависимости от типа записи.
Выводы и рекомендации
Регулярное удаление ревизий и ограничение их количества — простые, но эффективные методы оптимизации базы WordPress. Это помогает ускорить сайт, уменьшить размер бэкапов и снизить нагрузку на хостинг.
Рекомендуется комбинировать автоматизацию через WP-Cron с использованием плагинов, например, Clearfy Pro, для удобства и надежности.
Если вы хотите углубиться в тему, можно дополнительно изучить оптимизацию базы данных, настройку WP-Cron и мониторинг производительности сайта.