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

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

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

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

Кроме ревизий, в базе накапливаются:

  • Спам-комментарии и мусор
  • Транзиенты, срок действия которых истёк
  • Отчёты о действиях плагинов и журнал ошибок, которые не всегда нужны

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

Как вручную удалить ревизии и старые записи через SQL-запросы

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

Удаление ревизий

Ревизии хранятся в таблице wp_posts с типом revision. Для удаления всех ревизий выполните запрос:

DELETE FROM wp_posts WHERE post_type = 'revision';

Этот запрос удалит все ревизии, освободив место и ускорив базу. Но будьте аккуратны, если вы хотите сохранить некоторые из них — стоит сделать резервную копию базы.

Удаление спам-комментариев и мусора

Для удаления спам-комментариев:

DELETE FROM wp_comments WHERE comment_approved = 'spam';

Также можно очистить комментарии в корзине:

DELETE FROM wp_comments WHERE comment_approved = 'trash';

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

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

DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%';
DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_%' AND option_value < UNIX_TIMESTAMP();

Эти запросы очищают базу от временных данных, которые уже не нужны.

Автоматизация очистки базы с помощью плагина wp-ai-db-cleaner

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

<?php
/**
 * Plugin Name: WP-AI DB Cleaner
 * Description: Автоматическая очистка базы данных WordPress от ревизий и спама.
 * Version: 1.0
 * Author: wp-ai.ru
 */

// Удаление ревизий
function wpai_delete_post_revisions() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
}

// Удаление спам-комментариев
function wpai_delete_spam_comments() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'");
}

// Хук при активации плагина
function wpai_db_cleaner_activate() {
    wpai_delete_post_revisions();
    wpai_delete_spam_comments();
}
register_activation_hook(__FILE__, 'wpai_db_cleaner_activate');

// Регулярное очищение через CRON (раз в сутки)
if (!wp_next_scheduled('wpai_daily_db_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpai_daily_db_cleanup');
}
add_action('wpai_daily_db_cleanup', 'wpai_db_cleanup');

function wpai_db_cleanup() {
    wpai_delete_post_revisions();
    wpai_delete_spam_comments();
}
?>

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

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

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

В phpMyAdmin достаточно выбрать нужные таблицы и нажать «Оптимизировать таблицу». Но можно сделать это и программно.

Пример функции для оптимизации всех таблиц WordPress:

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

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

Рекомендации и лучшие практики

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

  • Регулярно удаляйте старые ревизии, особенно если вы активно редактируете записи.
  • Очищайте спам и удалённые комментарии.
  • Автоматизируйте очистку с помощью плагинов или CRON-задач.
  • Периодически оптимизируйте таблицы базы данных.
  • Перед любыми операциями с базой делайте резервные копии.

Соблюдение этих рекомендаций существенно улучшит производительность вашего сайта и сделает работу с WordPress комфортнее.

WooCommerce: как использовать хуки для добавления пользовательных функций
22.04.2026
WooCommerce: автоматическое отправление подтверждения заказа по email через код
16.06.2026
Как создать автоматический анализ контента в WordPress с помощью WPGPT
25.02.2026
Как создать автоматический генератор описаний для товаров WordPress с помощью AI
28.01.2026
WooCommerce: автоматическое удаление неактивных корзин по срокам через код
24.06.2026