В WordPress по умолчанию сохраняются все версии (ревизии) ваших записей и страниц, что помогает восстановить предыдущие варианты контента. Однако со временем накопление большого количества ревизий может существенно увеличить размер базы данных, замедлить работу сайта и затруднить резервное копирование.
Почему важно удалять старые ревизии WordPress
Каждая ревизия занимает место в таблице wp_posts. При активном ведении блога или интернет-магазина количество ревизий может исчисляться тысячами. Это приводит к следующим проблемам:
- Увеличение размера базы данных;
- Замедление запросов к базе данных, особенно при выборке записей;
- Увеличение времени резервного копирования;
- Нагрузка на сервер при выполнении операций с большим объёмом данных.
Регулярное удаление старых ревизий помогает держать базу данных в порядке и улучшить производительность сайта.
Как ограничить количество ревизий для новых записей
Чтобы предотвратить чрезмерное накопление ревизий, можно ограничить их число через файл wp-config.php. Добавьте туда следующую строку:
define('WP_POST_REVISIONS', 3);
Это установит сохранение максимум трёх ревизий для каждой записи или страницы. Если хотите полностью отключить ревизии, можно указать значение false:
define('WP_POST_REVISIONS', false);
Однако отключать ревизии полностью не рекомендуется, так как это снижает безопасность контента.
Удаление старых ревизий вручную через SQL-запрос
Если у вас есть доступ к phpMyAdmin или другому инструменту управления базой данных, можно удалить все ревизии одной командой:
DELETE FROM wp_posts WHERE post_type = 'revision';
Этот запрос удалит все ревизии из базы данных, что освободит много места. Но будьте осторожны — лучше сделать резервную копию базы данных перед выполнением.
Удаление ревизий с помощью WP-CLI
Если на сервере установлен WP-CLI, удаление ревизий можно выполнить командой:
wp post delete $(wp post list --post_type='revision' --format=ids) --force
Это быстрый и безопасный способ очистить базу данных без захода в phpMyAdmin.
Автоматическое удаление ревизий с помощью плагинов
Для тех, кто предпочитает не работать напрямую с базой, есть несколько плагинов, которые помогут управлять ревизиями:
- WP Rocket — премиум плагин для оптимизации, включает функции очистки базы данных, в том числе ревизий.
- WP-Sweep — бесплатный плагин, позволяющий удалить ревизии, автосохранения, спам-комментарии и многое другое.
- Clearfy Pro — многофункциональный плагин для оптимизации WordPress, включая управление ревизиями и очистку базы.
После установки и активации плагина обычно достаточно перейти в настройки и выполнить очистку ревизий за пару кликов.
Пример пользовательской функции для удаления ревизий через Cron
Если хочется автоматизировать процесс удаления ревизий без плагинов, можно создать функцию в functions.php активной темы, которая будет запускаться по расписанию:
function wpmart_delete_old_revisions() {
global $wpdb;
$days = 30; // Удалять ревизии старше 30 дней
$wpdb->query( $wpdb->prepare(
"DELETE FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_modified < %s",
date('Y-m-d H:i:s', strtotime("-{$days} days"))
));
}
if ( ! wp_next_scheduled( 'wpmart_daily_revision_cleanup' ) ) {
wp_schedule_event( time(), 'daily', 'wpmart_daily_revision_cleanup' );
}
add_action( 'wpmart_daily_revision_cleanup', 'wpmart_delete_old_revisions' );
Эта функция удалит ревизии старше 30 дней каждый день. Можно изменить интервал или количество дней по своему усмотрению.
Объяснение кода
Мы используем глобальный объект $wpdb для выполнения SQL-запроса. Запрос удаляет из таблицы wp_posts все записи с типом revision, у которых дата изменения post_modified старше 30 дней. Далее регистрируем ежедневное событие с помощью wp_schedule_event и подключаем к нему функцию очистки.
Рекомендации по оптимизации базы данных после очистки ревизий
После удаления ревизий рекомендуется оптимизировать таблицы базы данных, чтобы освободить неиспользуемое пространство и повысить производительность. Оптимизацию можно сделать через phpMyAdmin, выбрав таблицу wp_posts и нажав "Оптимизировать".
Также для автоматической оптимизации можно использовать плагин Clearfy Pro, который умеет очищать и оптимизировать базу данных в один клик.
Дополнительные советы
- Регулярно делайте резервные копии базы данных перед очисткой;
- Следите за количеством ревизий и при необходимости снижайте лимит в
wp-config.php; - Используйте кеширование и оптимизацию базы, чтобы ускорить работу сайта.