В WordPress каждая запись автоматически сохраняет свои ревизии — версии изменений, которые создаются при редактировании. Это удобно для восстановления предыдущих вариантов контента, однако со временем количество ревизий может существенно увеличиться и привести к раздуванию базы данных, замедлению работы сайта и увеличению времени резервного копирования. В этой статье разберём, как эффективно удалить старые ревизии, оптимизировать базу данных и при этом сохранить возможность работать с актуальными версиями записей.
Что такое ревизии в WordPress и зачем их удалять
Ревизии — это автоматические или ручные сохранения изменений в постах и страницах. WordPress сохраняет каждую версию, позволяя откатиться к нужной. Однако при частом редактировании количество ревизий растёт, и для крупных сайтов это может стать проблемой:
- Увеличение размера базы данных.
- Замедление запросов к базе данных.
- Увеличение времени резервного копирования.
- Меньшая производительность административной панели.
Удаление старых ревизий помогает сократить размер базы данных и повысить скорость работы сайта.
Как узнать количество ревизий в базе данных
Для начала стоит оценить, сколько ревизий хранится на сайте. Это можно сделать, выполнив SQL-запрос через phpMyAdmin или любой другой инструмент управления базой данных:
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';
Если количество ревизий исчисляется тысячами, имеет смысл их почистить.
Удаление ревизий с помощью SQL-запроса
Самый простой способ — удалить все ревизии через SQL-запрос. Но будьте осторожны, перед удалением сделайте резервную копию базы данных.
DELETE FROM wp_posts WHERE post_type = 'revision';
Этот запрос удалит все ревизии без возможности восстановления. Если хотите удалить только ревизии старше определённой даты, используйте такой запрос, заменив DATE_SUB(NOW(), INTERVAL 30 DAY) на нужный период:
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < DATE_SUB(NOW(), INTERVAL 30 DAY);
После удаления рекомендуем оптимизировать таблицу:
OPTIMIZE TABLE wp_posts;
Удаление ревизий через плагин WP Business Cleaner
Если вы предпочитаете удобный интерфейс, можно использовать плагин для очистки базы данных. Например, Clearfy Pro позволяет удалять ревизии, оптимизировать базу и отключать создание новых ревизий.
Преимущества использования плагина:
- Безопасное удаление с возможностью выбора ревизий.
- Оптимизация базы данных одним кликом.
- Настройка ограничения количества сохраняемых ревизий.
- Автоматизация очистки по расписанию.
Ограничение количества сохраняемых ревизий — настройка wpbusiness_limit_revisions
Чтобы избежать накопления большого числа ревизий, можно ограничить их количество в файле wp-config.php добавлением константы:
define('WP_POST_REVISIONS', 5);
Эта строка ограничит количество ревизий для каждой записи до 5 последних. Если хотите полностью отключить ревизии, установите значение в false:
define('WP_POST_REVISIONS', false);
Однако отключать ревизии не рекомендуется, так как это снижает безопасность контента при редактировании.
Создание пользовательской функции для удаления ревизий в WordPress
Если вы предпочитаете автоматизировать удаление ревизий программно, можно создать собственную функцию в файле functions.php вашей темы или в отдельном плагине:
function wpbusiness_delete_old_revisions() {
global $wpdb;
$days = 30; // Удалять ревизии старше 30 дней
$cutoff_date = date('Y-m-d H:i:s', strtotime("-{$days} days"));
$query = $wpdb->prepare(
"DELETE FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_date < %s",
$cutoff_date
);
$deleted = $wpdb->query($query);
if ($deleted !== false) {
// Оптимизируем таблицу после удаления
$wpdb->query("OPTIMIZE TABLE {$wpdb->posts}");
}
return $deleted;
}
// Можно запускать функцию по Cron или вручную
// add_action('wp_business_cleanup_cron', 'wpbusiness_delete_old_revisions');
Эту функцию можно привязать к WordPress Cron для регулярной очистки.
Как настроить Cron для автоматической очистки ревизий
Чтобы автоматизировать процесс удаления ревизий, добавим задачу в планировщик WordPress:
if (!wp_next_scheduled('wp_business_cleanup_cron')) {
wp_schedule_event(time(), 'daily', 'wp_business_cleanup_cron');
}
add_action('wp_business_cleanup_cron', 'wpbusiness_delete_old_revisions');
Это позволит запускать функцию очистки каждый день без вашего участия.
Резюме и рекомендации
Удаление старых ревизий — важный шаг для поддержания производительности и здоровья базы данных WordPress. Рекомендуется:
- Регулярно очищать ревизии, особенно на крупных сайтах.
- Ограничить количество сохраняемых ревизий в
wp-config.php. - Использовать плагины, такие как Clearfy Pro, для удобства и безопасности.
- Автоматизировать очистку с помощью Cron и собственных функций.
Таким образом, вы не только уменьшите нагрузку на базу данных, но и улучшите скорость работы и комфорт администрирования сайта.