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

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

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

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

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

  • Сократить объем базы данных;
  • Уменьшить время выполнения запросов;
  • Повысить общую производительность сайта.

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

Как удалить ревизии через phpMyAdmin

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

Пример запроса для удаления всех ревизий:

DELETE FROM wp_posts WHERE post_type = 'revision';

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

DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < '2023-01-01 00:00:00';
<

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

OPTIMIZE TABLE wp_posts;

Автоматизация удаления ревизий с помощью плагина WPNews CleanDB

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

<?php
/**
 * Plugin Name: WPNews CleanDB
 * Description: Удаляет старые ревизии и оптимизирует базу WordPress.
 * Version: 1.0
 * Author: WPNews
 */

function wpnews_deleted_old_revisions() {
    global $wpdb;
    $table = $wpdb->prefix . 'posts';
    $date_limit = date('Y-m-d H:i:s', strtotime('-30 days'));
    $deleted = $wpdb->query(
        $wpdb->prepare(
            "DELETE FROM $table WHERE post_type = 'revision' AND post_date < %s",
            $date_limit
        )
    );
    if($deleted !== false){
        $wpdb->query("OPTIMIZE TABLE $table");
    }
}

// Запускаем функцию один раз в сутки
if (!wp_next_scheduled('wpnews_daily_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpnews_daily_cleanup');
}
add_action('wpnews_daily_cleanup', 'wpnews_deleted_old_revisions');

// Очистка при деактивации плагина
function wpnews_cleandb_deactivate() {
    wp_clear_scheduled_hook('wpnews_daily_cleanup');
}
register_deactivation_hook(__FILE__, 'wpnews_cleandb_deactivate');
?>

Этот плагин удаляет ревизии старше 30 дней и оптимизирует таблицу posts. Такой подход минимизирует влияние на работу сайта и автоматизирует процесс очистки.

Другие методы оптимизации базы данных WordPress

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

Комментарии со статусом spam и trash занимают место и замедляют запросы. Их можно удалить запросом:

DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = 'trash';

Или через плагин WPNews CleanDB добавить соответствующую функцию:

function wpnews_clean_comments() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'");
    $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'trash'");
}

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

Автосохранения сохраняются как отдельные записи типа 'revision', но могут быть и отдельными записями с типом 'autosave'. Их тоже можно удалить для очистки базы.

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

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

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

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

  • Ограничить количество ревизий, добавив в wp-config.php строку define('WP_POST_REVISIONS', 5); – это сохранит максимум 5 ревизий на запись.
  • Регулярно делать резервное копирование базы перед очисткой.
  • Использовать проверенные плагины или собственные скрипты для автоматизации процесса.
  • Следить за размером таблиц и периодически выполнять их оптимизацию.

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

Заключение

Удаление старых ревизий и других ненужных данных из базы WordPress – важный шаг для поддержания быстродействия и стабильности сайта. Используйте как ручные методы через SQL, так и автоматизацию через плагины, чтобы процесс был максимально удобным и безопасным. Следуя представленным рекомендациям, вы сможете существенно улучшить работу вашего WordPress-сайта без привлечения дополнительных ресурсов сервера.

Как избежать проблем с разрешениями файлов в WordPress
30.12.2025
Как удалить все комментарии с одного поста в WordPress
06.12.2025
Как удалить категории в WordPress правильно с помощью кода и плагинов
04.02.2026
Как создать автоматическое резервное копирование WordPress
02.12.2025
Оптимизация базы данных WordPress: удаляем старые ревизии и чистим базу
15.11.2025