wpmake.ru wordpress WPMake

Как удалить все оставшиеся ревизии в WordPress: эффективное решение

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

В этой статье разберём, как удалить все оставшиеся ревизии в WordPress эффективно, не прибегая к установке тяжёлых плагинов и не рискуя потерять важные данные. Мы рассмотрим как стандартные SQL-запросы, так и примеры PHP-кода для удаления ревизий.

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

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

  • Увеличению размера базы данных.
  • Замедлению работы запросов к таблице wp_posts.
  • Проблемам с резервным копированием и восстановлением.

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

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

Самый простой и быстрый способ — это выполнить SQL-запрос напрямую в базе данных, например, через phpMyAdmin. Пример запроса для удаления всех ревизий:

DELETE FROM wp_posts WHERE post_type = 'revision';

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

Также можно заранее проверить, сколько ревизий хранится, выполнив:

SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';

Ниже приведён пример запроса, который удалит ревизии только у записей определённого автора (например, ID автора = 5):

DELETE r FROM wp_posts r INNER JOIN wp_posts p ON r.post_parent = p.ID WHERE r.post_type = 'revision' AND p.post_author = 5;

Удаление ревизий через PHP-код в functions.php или плагине

Если вы предпочитаете решение на PHP, можно создать функцию, которая удалит все ревизии с помощью WP_Query и функции wp_delete_post(). Это безопаснее, чем прямой SQL-запрос, поскольку учитывает все хуки и очистку кэша.

function wpmake_delete_all_revisions() {
    $args = [
        'post_type'      => 'revision',
        'posts_per_page' => 100,
        'fields'         => 'ids',
        'no_found_rows'  => true,
    ];

    do {
        $revisions = get_posts($args);
        if (empty($revisions)) {
            break;
        }
        foreach ($revisions as $rev_id) {
            wp_delete_post($rev_id, true); // true — без помещения в корзину
        }
    } while (count($revisions) === 100);
}

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

Этот код удалит ревизии партиями по 100 штук, что предотвращает превышение лимитов памяти и времени выполнения скрипта.

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

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

define('WP_POST_REVISIONS', 5);

Это ограничит количество ревизий до 5 для каждой записи. Можно поставить любое другое число или отключить ревизии полностью, указав false. Однако полностью отключать ревизии рекомендуют только опытным пользователям, так как это рискованно.

Рекомендации по безопасности и оптимизации

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

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

Также рекомендую периодически оптимизировать базу данных с помощью SQL-запроса:

OPTIMIZE TABLE wp_posts;

Это уменьшит её размер и ускорит работу.

Заключение

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

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

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙