Оптимизация базы данных WordPress: удаляем старые данные и уменьшаем размер базы

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

Почему важно оптимизировать базу данных WordPress

База данных — это сердце вашего сайта, в ней хранится весь контент, настройки, метаданные и пользовательская информация. Со временем из-за постоянных правок, обновлений и взаимодействий, база разрастается, и накапливаются «мусорные» данные, такие как:

  • Ревизии записей — каждое сохранение создаёт новую версию, которые редко удаляются;
  • Автосохранения — временные данные, которые могут оставаться после завершения работы;
  • Спам и невалидные комментарии;
  • Устаревшие транзиенты — временные опции, которые не удалились после истечения срока;
  • Данные плагинов, которые уже не используются.

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

Плагины для оптимизации базы данных WordPress

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

1. WP-Optimize

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

Для установки просто найдите WP-Optimize в репозитории WordPress.

2. Advanced Database Cleaner

Этот плагин даёт возможность более тонко контролировать очистку — можно удалять старые черновики, ревизии, временные таблицы плагинов, а также планировать автоматическую очистку.

Ссылка для скачивания: Advanced Database Cleaner.

Удаление ревизий и автосохранений через код

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

function wpelement_delete_old_revisions() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
    $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_status = 'auto-draft'");
}
add_action('admin_init', 'wpelement_delete_old_revisions');

Этот код удалит все ревизии и автосохранения при заходе в админ-панель. Однако используйте с осторожностью — лучше запускать один раз и потом отключить.

Удаление устаревших транзиентов

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

function wpelement_delete_expired_transients() {
    global $wpdb;
    $time = time();
    $transients = $wpdb->get_col(
        "SELECT option_name FROM {$wpdb->options} 
         WHERE option_name LIKE '_transient_%'"
    );
    foreach ( $transients as $transient ) {
        if ( preg_match('/_transient_timeout_(.+)/', $transient, $matches) ) {
            $timeout = get_option( $transient );
            if ( $timeout !== false && $timeout < $time ) {
                delete_option( str_replace('_transient_timeout_', '_transient_', $transient) );
                delete_option( $transient );
            }
        }
    }
}
add_action('admin_init', 'wpelement_delete_expired_transients');

Этот код ищет все транзиенты и удаляет те, у которых время жизни истекло.

Оптимизация таблиц базы данных

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

Для этого можно использовать SQL-запрос:

function wpelement_optimize_tables() {
    global $wpdb;
    $tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
    foreach ($tables as $table) {
        $wpdb->query('OPTIMIZE TABLE ' . $table[0]);
    }
}
add_action('admin_init', 'wpelement_optimize_tables');

Запустите этот код один раз в админке, а затем отключите. Оптимизация помогает снизить размер базы и ускорить запросы.

Удаление данных неактивных плагинов

Многие плагины при удалении оставляют свои таблицы и записи в базе. Чтобы найти и удалить такие данные, можно использовать плагин Advanced Database Cleaner, который умеет сканировать базу и показывать остатки от удалённых плагинов.

Также можно написать свой SQL-запрос, но тут нужна аккуратность и понимание структуры базы.

Автоматизация очистки базы данных

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

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

function wpelement_do_weekly_cleanup() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
    $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'");
}
add_action('wpelement_weekly_cleanup', 'wpelement_do_weekly_cleanup');

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

Выводы и рекомендации

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

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

Как добавить автозаполнение форм в WordPress без плагинов
23.03.2026
Как создать автоматический импорт постов в WordPress из внешнего источника
25.12.2025
Как автоматически отключить отзывы на отдельных страницах WooCommerce
15.05.2026
Как массово удалить мета-поля у записей в WordPress по определённым условиям
01.01.2026
Как создать и настроить круговое меню в WordPress без плагинов
04.01.2026