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

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

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

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

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

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

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

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

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

DELETE FROM wp_posts WHERE post_type = 'revision';

Этот запрос удалит все ревизии без исключения. Однако использовать его стоит осторожно, так как вы потеряете все версии. Лучше сначала сделать резервную копию базы.

Для удаления ревизий старше определенной даты можно использовать такой запрос:

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

Замените дату на актуальную для вашего сайта.

Оптимизация таблиц после удаления

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

OPTIMIZE TABLE wp_posts;

Это можно сделать также через phpMyAdmin или другой инструмент.

Автоматическое ограничение количества ревизий через functions.php

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

function wponline_limit_post_revisions() {
    return 5; // сохранять не более 5 ревизий
}
add_filter('wp_revisions_to_keep', 'wponline_limit_post_revisions', 10, 2);

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

Это простой и эффективный способ контролировать рост базы без потери важных версий.

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

Если вы не хотите работать с кодом и SQL напрямую, можно воспользоваться плагинами:

  • WP-Optimize — мощный инструмент для очистки базы, удаления ревизий, спама, оптимизации таблиц и кеширования.
  • Advanced Database Cleaner — позволяет выбирать, какие данные удалять, включая ревизии, черновики, транзиенты и т.д.
  • Optimize Database after Deleting Revisions — фокусируется именно на ревизиях и оптимизации таблиц.

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

Пример настройки WP-Optimize

После установки и активации плагина перейдите в раздел "WP-Optimize" → "Database" и отметьте опции:

  • Удалить все ревизии постов
  • Оптимизировать таблицы базы данных
  • Удалить спам и черновики

Нажмите "Run all selected optimizations" и дождитесь завершения.

Создание собственного плагина для удаления ревизий WordPress

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

Пример минимального плагина wponline-clean-revisions.php:

<?php
/*
Plugin Name: WPOnline Clean Revisions
Description: Удаление всех ревизий с оптимизацией базы
Version: 1.0
Author: WPOnline
*/

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

register_activation_hook(__FILE__, 'wponline_delete_all_revisions');
?>

Этот код при активации плагина удалит все ревизии и оптимизирует таблицу. Для более гибкой работы можно добавить WP-Cron задачу.

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

Для поддержания производительности сайта советую:

  • Регулярно удалять старые ревизии (раз в месяц или по необходимости).
  • Ограничить количество ревизий через фильтр wp_revisions_to_keep.
  • Оптимизировать таблицы базы данных после очистки.
  • Использовать плагины для автоматизации очистки.
  • Делать резервные копии базы перед любыми операциями.

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

Оптимизация базы данных WordPress: удаляем старые ревизии и ускоряем сайт
13.11.2025
Как использовать MetaBox для создания собственных пользовательских полей в WordPress
05.04.2026
Как автоматически удалять старые пункты в меню WordPress по дате создания
01.03.2026
Автоматическое удаление старых записей в WordPress по дате публикации
03.02.2026
WooCommerce: автоматическое изменение стоимости товаров при определённых условиях
09.05.2026