Как удалить старые версии постов в WordPress

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

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

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

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

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

Однако не стоит удалять все ревизии без разбора — лучше оставлять несколько последних для безопасности.

Удаление ревизий с помощью SQL-запроса

Самый быстрый способ удалить все старые ревизии — выполнить SQL-запрос напрямую в базе данных. Вот пример запроса, который удалит все ревизии, оставив только последние 3 для каждой записи:

DELETE FROM wp_posts WHERE ID NOT IN (SELECT * FROM (SELECT MAX(ID) FROM wp_posts WHERE post_type = 'revision' GROUP BY post_parent) AS t) AND post_type = 'revision';

Но такой запрос удалит все ревизии, не оставляя последних 3. Чтобы оставить последние 3 ревизии, можно использовать чуть более сложный подход через PHP, так как SQL-запросы в MySQL не очень удобны для такой задачи.

Удаление ревизий через PHP-функцию с ограничением по количеству

Добавьте в functions.php вашей темы или создайте плагин с таким кодом:

function wptemp_delete_old_revisions() {
    global $wpdb;
    // Получаем ID записей с ревизиями
    $posts = $wpdb->get_col("SELECT DISTINCT post_parent FROM {$wpdb->posts} WHERE post_type = 'revision'");

    foreach ($posts as $post_id) {
        // Получаем все ревизии для поста, кроме последних 3
        $revisions = $wpdb->get_results($wpdb->prepare(
            "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_parent = %d ORDER BY post_modified DESC LIMIT 100 OFFSET 3",
            $post_id
        ));

        if ($revisions) {
            $revision_ids = wp_list_pluck($revisions, 'ID');
            foreach ($revision_ids as $rev_id) {
                wp_delete_post($rev_id, true);
            }
        }
    }
}

// Запустите функцию вручную или через админку
wptemp_delete_old_revisions();

Этот код перебирает все посты с ревизиями, оставляет для каждого последние 3 ревизии и удаляет остальные. Метод wp_delete_post удаляет записи корректно, учитывая все связи.

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

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

  • WP-Optimize — позволяет очищать базу данных от ревизий, спам-комментариев и других ненужных данных. В настройках можно задать автоматическую очистку.
  • Revision Control — позволяет ограничить количество ревизий для каждого типа записи и удалять старые.

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

Как предотвратить накопление большого числа ревизий в будущем

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

define('WP_POST_REVISIONS', 3);

Это ограничит хранение до трёх ревизий на запись. Если хотите полностью отключить ревизии (не рекомендуется), установите значение 0.

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

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

После удаления ревизий в таблице wp_posts желательно оптимизировать базу данных, чтобы освободить занимаемое пространство и улучшить производительность. Это можно сделать через phpMyAdmin или WP-CLI:

OPTIMIZE TABLE wp_posts;

Или с помощью плагина WP-Optimize в пару кликов.

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

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

Если вы хотите комплексное решение по оптимизации и управлению ревизиями, обратите внимание на Clearfy Pro — мощный инструмент для ускорения и очистки WordPress.

Как запретить регистрацию ботов в WordPress без плагинов
19.03.2026
Как использовать WPRemark для автоматического отзыва на сайте WordPress
22.03.2026
Как эффективно использовать wp_enqueue_style и wp_enqueue_script в WordPress
26.03.2026
Как установить и настроить ограничение числа регистраций в WordPress
04.02.2026
Оптимизация памяти и управление использованием памяти в WordPress
08.04.2026