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

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

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

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

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

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

Как ограничить количество ревизий с помощью wp-config.php

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

define('WP_POST_REVISIONS', 5);

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

Это базовое решение, но что делать с уже накопившимися ревизиями? Для этого нужен скрипт автоматического удаления.

Создание функции для автоматического удаления старых ревизий

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

Пример функции для удаления всех ревизий старше 30 дней:

function wplessons_delete_old_revisions() {
    global $wpdb;
    $days = 30; // Удалять ревизии старше 30 дней
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $revisions = $wpdb->get_col(
        $wpdb->prepare(
            "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_date < %s",
            $date
        )
    );

    if (!empty($revisions)) {
        foreach ($revisions as $revision_id) {
            wp_delete_post($revision_id, true); // Полное удаление
        }
    }
}

Эта функция проверяет базу, находит ревизии старше 30 дней и удаляет их без возможности восстановления.

Автоматизация с помощью WP-Cron

Чтобы функция запускалась регулярно, нужно добавить задание в WP-Cron. Пример добавления ежедневного запуска:

function wplessons_schedule_revision_cleanup() {
    if (!wp_next_scheduled('wplessons_revision_cleanup_hook')) {
        wp_schedule_event(time(), 'daily', 'wplessons_revision_cleanup_hook');
    }
}
add_action('wp', 'wplessons_schedule_revision_cleanup');

add_action('wplessons_revision_cleanup_hook', 'wplessons_delete_old_revisions');

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

Использование плагинов для управления ревизиями

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

WP-Sweep

Плагин позволяет удалять ревизии, спам, черновики и оптимизировать базу данных. Удобен и прост в использовании. После установки перейдите в меню Инструменты > Sweep и выберите Post Revisions для удаления.

Clearfy Pro

Плагин Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wplessons.ru&utm_medium=article&utm_campaign=kak-sozdat-avtomaticheskoe-udaleniye-staryh-reviziy-wordpress) предлагает расширенные возможности оптимизации, включая управление ревизиями, отключение REST API, очистку базы данных и многое другое. Особенно полезен для сайтов с большим трафиком и сложной структурой.

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

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

OPTIMIZE TABLE wp_posts;

Или воспользоваться плагинами, например, WP-Optimize или упомянутым Clearfy Pro, которые выполняют оптимизацию автоматически.

Практические рекомендации по управлению ревизиями

Для эффективного управления ревизиями придерживайтесь следующих рекомендаций:

  • Ограничьте количество ревизий в wp-config.php, как описано выше.
  • Настройте автоматическое удаление старых ревизий с помощью WP-Cron.
  • Регулярно оптимизируйте базу данных.
  • Используйте проверенные плагины для дополнительной очистки и оптимизации.
  • Если активно работаете с редакторами, обсуждайте с командой правила сохранения, чтобы не создавать слишком много ревизий.

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

Заключение

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

Как автоматически удалить товар из заказов WooCommerce после отмены или возврата
18.04.2026
Как изменить размер и форму аватара в WordPress с примерами кода
26.01.2026
Как изменить автора старой записи в WordPress без плагинов
26.02.2026
Как автоматически изменить статус заказа WooCommerce при возврате
15.05.2026
Оптимизация нагрузки на сервер от admin-ajax.php в WordPress
25.12.2025