wpwebsite.ru wordpress WPWebSite

Как удалить старые ревизии записей в WordPress

Ревизии записей в WordPress — полезная вещь: они позволяют откатить изменения, если что-то пошло не так. Но со временем их количество может сильно разрастись, занимая место в базе данных и замедляя работу сайта. В этой статье расскажу, как безопасно и эффективно удалить старые ревизии, освободить место и ускорить сайт без потери важных данных.

Что такое ревизии в WordPress и зачем их удалять

Каждый раз при сохранении записи WordPress создаёт копию — ревизию. Это удобно, если нужно вернуть старую версию. Но иногда ревизий становится слишком много. Особенно если много правок или большой объём контента.

Избыточные ревизии:

  • Увеличивают размер базы данных.
  • Усложняют и замедляют запросы к базе.
  • Могут приводить к уменьшению производительности сайта.

Поэтому периодическое удаление старых ревизий — хорошая практика для поддержки скорости и стабильности.

Как посмотреть количество ревизий в базе

Для оценки проблемы можно выполнить SQL-запрос к базе данных через phpMyAdmin или любой другой инструмент:

SELECT post_id, COUNT(*) AS revisions_count FROM wp_posts WHERE post_type = 'revision' GROUP BY post_id ORDER BY revisions_count DESC;

Этот запрос покажет, для каких записей сколько ревизий сохранено. Если цифры большие — пора чистить.

Удаление ревизий с помощью плагинов

Самый простой и безопасный способ — использовать плагины. Рекомендую:

  • WP-Optimize — многофункциональный плагин для очистки базы, в том числе удаления ревизий. Можно настроить автоматическую очистку.
    Подробнее на wpshop.ru
  • Better Delete Revision — специализированный плагин для удаления ревизий, простой и эффективный.
    Подробнее на wpshop.ru

После установки плагина достаточно запустить очистку через интерфейс, и старые ревизии будут удалены.

Удаление ревизий вручную через SQL-запрос

Если вы уверены в своих действиях и имеете доступ к базе, можно удалить ревизии напрямую через SQL. Для этого:

DELETE FROM wp_posts WHERE post_type = 'revision';

Этот запрос удалит все ревизии. Но лучше предварительно сделать резервную копию базы данных!

Можно ограничить удаление только ревизиями старше определённого времени, например, старше 30 дней:

DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < NOW() - INTERVAL 30 DAY;

Автоматическое ограничение количества ревизий в WordPress

Чтобы избежать накопления большого числа ревизий в будущем, можно ограничить их количество через wp-config.php. Добавьте эту строку:

define('WP_POST_REVISIONS', 5);

Это ограничит число ревизий каждой записи до 5. Можно указать и другое число, либо false для полного отключения ревизий (не рекомендую).

Пример функции для удаления ревизий по крону

Для автоматизации удаления старых ревизий можно написать функцию и подключить её к крону WordPress:

function wpwebsite_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
    ) );
}
add_action('wp_scheduled_delete', 'wpwebsite_delete_old_revisions');

Эта функция будет запускаться вместе со стандартной задачей WordPress wp_scheduled_delete, которая отвечает за очистку мусора.

Оптимизация базы данных после удаления ревизий

После удаления ревизий желательно оптимизировать таблицы базы данных, чтобы освободить место и улучшить производительность. Это можно сделать SQL-запросом:

OPTIMIZE TABLE wp_posts;

Или через плагины вроде WP-Optimize, которые делают это автоматически.

Заключение: поддержка базы в чистоте

Регулярное удаление старых ревизий — простой, но эффективный способ поддерживать скорость и стабильность сайта. Используйте плагины для удобства или автоматизируйте процесс кодом и кроном. Не забывайте делать резервные копии перед любыми изменениями в базе данных.

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙