Ревизии записей в WordPress — это полезный инструмент, который позволяет откатиться к предыдущим версиям страниц и постов. Однако при активном редактировании количество ревизий быстро растет и может существенно увеличить размер базы данных, что замедляет работу сайта и усложняет его обслуживание.
Почему важно контролировать количество ревизий в WordPress
По умолчанию WordPress сохраняет неограниченное количество ревизий для каждой записи, что на крупных сайтах приводит к накоплению десятков тысяч записей в таблице wp_posts с типом revision. Это замедляет запросы к базе данных и увеличивает время бэкапов.
Удаление старых ревизий помогает:
- Оптимизировать размер базы данных;
- Ускорить работу сайта;
- Упростить резервное копирование и восстановление;
- Избавиться от ненужных данных.
Автоматическое удаление ревизий с помощью плагина Clearfy Pro
Если вы используете Clearfy Pro, то можете активировать функцию автоматического удаления ревизий в настройках оптимизации базы данных. Плагин позволит настроить удаление ревизий старше определенного периода или удалить все ревизии, оставив только последние несколько.
Это простой вариант для тех, кто не хочет писать код и предпочитает надежные готовые решения.
Реализация автоматического удаления ревизий через WP-Cron и кастомный плагин
Если вы хотите сделать решение под себя, можно написать небольшой плагин, который будет периодически удалять старые ревизии с помощью WP-Cron.
Создание функции удаления ревизий
Ниже приведен пример функции, которая удаляет все ревизии старше 30 дней:
function wpbook_delete_old_revisions() {
global $wpdb;
$days = 30; // Удалять ревизии старше 30 дней
$date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
$revisions = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_modified < %s",
$date
));
if (!empty($revisions)) {
foreach ($revisions as $revision_id) {
wp_delete_post($revision_id, true); // Полное удаление
}
}
}
Регистрация WP-Cron задачи
Добавим задачу в WP-Cron, чтобы функция запускалась ежедневно:
function wpbook_schedule_revision_cleanup() {
if (!wp_next_scheduled('wpbook_daily_revision_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpbook_daily_revision_cleanup');
}
}
add_action('wp', 'wpbook_schedule_revision_cleanup');
add_action('wpbook_daily_revision_cleanup', 'wpbook_delete_old_revisions');
Удаление задачи при деактивации плагина
Чтобы не оставлять мусор, при деактивации плагина следует очистить расписание:
function wpbook_deactivate_cleanup() {
$timestamp = wp_next_scheduled('wpbook_daily_revision_cleanup');
if ($timestamp) {
wp_unschedule_event($timestamp, 'wpbook_daily_revision_cleanup');
}
}
register_deactivation_hook(__FILE__, 'wpbook_deactivate_cleanup');
Ограничение количества ревизий через wp-config.php
Чтобы предотвратить накопление большого количества ревизий, можно ограничить их число в файле wp-config.php. Добавьте туда строку:
define('WP_POST_REVISIONS', 5);
Это позволит сохранять максимум 5 ревизий на запись, что значительно снизит нагрузку на базу данных.
Если хотите полностью отключить ревизии, поставьте значение 0, но будьте осторожны — это может привести к потере важной информации при редактировании.
Использование плагина WP-Optimize для очистки ревизий
Еще один популярный инструмент — WP-Optimize. Он позволяет:
- Удалять ненужные ревизии;
- Оптимизировать таблицы базы данных;
- Проводить очистку с расписанием.
Плагин имеет удобный интерфейс и подойдет тем, кто предпочитает готовые решения без программирования.
Рекомендации по работе с ревизиями
Для эффективного управления ревизиями советуем:
- Ограничить количество ревизий через
wp-config.php; - Регулярно очищать старые ревизии с помощью автоматических задач или плагинов;
- Использовать надежные решения, например Clearfy Pro для комплексной оптимизации;
- Проверять размер базы данных и при необходимости проводить ручную оптимизацию.
Так вы сохраните полезность ревизий для безопасности и контроля версий, но при этом не будете переплачивать производительностью и ресурсами.