wp-lessons.ru wordpress WP-Lessons

Как удалить старые ревизии в WordPress без плагинов

Ревизии записей в WordPress — полезная функция, которая позволяет возвращаться к предыдущим версиям контента. Однако со временем их количество может существенно разрастаться, замедляя работу сайта и увеличивая размер базы данных. В этой статье мы рассмотрим, как удалить старые ревизии без использования плагинов, используя только SQL-запросы и PHP-код. Это позволит вам оптимизировать базу данных и повысить производительность WordPress.

Почему важно удалять старые ревизии WordPress

Каждый раз при сохранении поста WordPress автоматически создает новую ревизию. Со временем их число становится очень большим, особенно на сайтах с большим количеством контента и активными авторами.

Излишнее количество ревизий:

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

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

Как узнать количество ревизий в базе данных

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

SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';

Если префикс таблиц у вас отличается от wp_, замените его соответственно.

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

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

Самый простой способ — удалить ревизии напрямую из базы данных с помощью запроса:

DELETE FROM wp_posts WHERE post_type = 'revision';

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

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

После выполнения запроса рекомендуется оптимизировать таблицу, чтобы освободить место:

OPTIMIZE TABLE wp_posts;

Важно: прежде чем выполнять запросы, обязательно сделайте резервную копию базы данных!

Автоматическое удаление старых ревизий через PHP-функцию

Если вы хотите автоматизировать процесс удаления старых ревизий, можно написать кастомную функцию, которую будете запускать вручную или по расписанию через WP-Cron.

Пример функции для удаления ревизий старше 30 дней:

function wp_lessons_delete_old_revisions() {
    global $wpdb;
    $days = 30;
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $query = $wpdb->prepare(
        "DELETE FROM {$wpdb->posts} WHERE post_type = %s AND post_date < %s",
        'revision',
        $date_threshold
    );

    $deleted = $wpdb->query($query);
    return $deleted;
}

Эту функцию можно вызвать, например, из файла functions.php вашей темы или создать отдельный плагин.

Запуск функции по расписанию (WP-Cron)

Чтобы удалять старые ревизии автоматически, установим WP-Cron задачу на еженедельный запуск:

function wp_lessons_schedule_revision_cleanup() {
    if (!wp_next_scheduled('wp_lessons_cleanup_old_revisions')) {
        wp_schedule_event(time(), 'weekly', 'wp_lessons_cleanup_old_revisions');
    }
}
add_action('wp', 'wp_lessons_schedule_revision_cleanup');

add_action('wp_lessons_cleanup_old_revisions', 'wp_lessons_delete_old_revisions');

Теперь функция будет запускаться раз в неделю и удалять ревизии старше 30 дней.

Ограничение количества ревизий для новых записей

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

define('WP_POST_REVISIONS', 5);

Это позволит хранить только последние 5 ревизий для каждой записи.

Для более гибкого контроля можно использовать фильтр wp_revisions_to_keep:

function wp_lessons_limit_revisions($num, $post) {
    return 5; // Максимум 5 ревизий на запись
}
add_filter('wp_revisions_to_keep', 'wp_lessons_limit_revisions', 10, 2);

Плагины для управления ревизиями (если все же захотите использовать)

Хотя в статье мы рассматриваем удаление без плагинов, иногда для удобства можно использовать готовые решения. Из качественных плагинов стоит отметить:

  • Clearfy Pro — плагин для оптимизации и очистки базы данных, включая ревизии.
  • Expert Review — инструмент для аудита сайта, помогает выявить проблемы с базой данных.

Используйте плагины, если не уверены в работе с базой данных напрямую.

Дополнительные советы по оптимизации базы данных WordPress

Удаление ревизий — лишь часть оптимизации. Чтобы поддерживать базу в хорошем состоянии, рекомендуем:

  • Регулярно очищать спам и неактивные комментарии.
  • Удалять устаревшие транзиенты и временные опции.
  • Оптимизировать таблицы базы данных (через SQL-команду OPTIMIZE TABLE или инструменты хостинга).
  • Использовать кеширование и CDN для снижения нагрузки.

Эти меры помогут вашему сайту работать быстрее и стабильнее.

×
WordPress
ждет обновления!

Забирай -20% на премиум-решения

Темы и плагины ⋙