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

При активной работе с WordPress часто возникает проблема с избыточным количеством ревизий постов (версий), которые сохраняются в базе данных. Это приводит к ее раздуванию, замедлению работы сайта и увеличению времени резервного копирования. В этой статье мы подробно разберем, как безопасно и эффективно удалить ненужные версии постов из базы данных, а также рассмотрим плагины и собственные решения с кодом для автоматизации процесса.

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

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

Удаление старых версий позволяет:

  • Снизить нагрузку на базу данных;
  • Ускорить работу сайта и админ-панели;
  • Оптимизировать бэкапы и восстановление;
  • Уменьшить время выполнения запросов.

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

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

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

SELECT post_type, COUNT(*) as revisions_count FROM wp_posts WHERE post_type = 'revision' GROUP BY post_type;

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

SELECT ID, post_parent, post_title FROM wp_posts WHERE post_type = 'revision' AND post_parent = 123;

Замените 123 на ID нужного поста.

Удаление ревизий через плагины: лучшие варианты

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

1. WP-Optimize

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

2. Advanced Database Cleaner

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

3. WP-Sweep

Простой и эффективный плагин, который использует стандартные WordPress-функции для удаления ревизий и других ненужных данных. Позволяет быстро очистить базу без сложных настроек.

Удаление ревизий с помощью кода: примеры и рекомендации

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

function wpfaq_delete_all_revisions() {
    global $wpdb;
    $revision_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision'");
    if (!empty($revision_ids)) {
        foreach ($revision_ids as $revision_id) {
            wp_delete_post($revision_id, true);
        }
    }
}

Эта функция получает идентификаторы всех ревизий и удаляет их с помощью стандартной функции wp_delete_post, что обеспечивает корректное удаление и очистку связанной с ревизиями информации.

Для автоматизации вызовите ее, например, через хук или вручную в админке.

Удаление ревизий старше определенного времени

Иногда нужно оставить последние версии, но удалить устаревшие. Вот пример функции для удаления ревизий старше 30 дней:

function wpfaq_delete_old_revisions($days = 30) {
    global $wpdb;
    $date = date('Y-m-d H:i:s', strtotime("-{$days} days"));
    $revision_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_modified < %s",
        $date
    ));
    if (!empty($revision_ids)) {
        foreach ($revision_ids as $revision_id) {
            wp_delete_post($revision_id, true);
        }
    }
}

Вы можете поменять количество дней, чтобы регулировать глубину очистки.

Ограничение количества ревизий через wp-config.php

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

define('WP_POST_REVISIONS', 5);

Здесь 5 — максимальное число ревизий для каждого поста. Можно поставить и 0, чтобы полностью отключить ревизии, но это не рекомендуется, так как потери данных становятся более вероятными.

Резюме и рекомендации по очистке ревизий

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

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

Как удалить все комментарии на сайте WordPress: подробное руководство от WPFAQ
25.11.2025
Как создать динамические формы в WordPress с помощью REST API
07.04.2026
Как удалить и заблокировать спам регистрации в WordPress
10.04.2026
Оценка и отзывы в WordPress: настройка и примеры реализации
01.02.2026
Как сделать вывод постов по таксономии с мета полями в WordPress
02.03.2026