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

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

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

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

Рассмотрим два основных способа: с помощью SQL-запросов к базе данных и с помощью кастомного PHP-скрипта, который можно добавить в functions.php или выполнить отдельно.

Удаление ревизий через SQL-запросы

Первый и самый быстрый способ — напрямую удалить все ревизии из таблицы wp_posts. Ревизии имеют тип post_type = 'revision', что позволяет легко их идентифицировать.

Чтобы удалить все ревизии из базы данных, используйте следующий SQL-запрос. Его можно выполнить через phpMyAdmin, Adminer или другой инструмент для работы с базой данных:

DELETE FROM wp_posts WHERE post_type = 'revision';

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

OPTIMIZE TABLE wp_posts;

Если вы хотите удалить ревизии только для определённых постов или за определённый период времени, запрос можно усложнить. Например, удалить ревизии старше 30 дней:

DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < NOW() - INTERVAL 30 DAY;

Кастомный PHP-скрипт для удаления ревизий

Если вы предпочитаете управлять процессом из WordPress, можно написать собственную функцию, которая удалит ревизии через WP_Query и функции WordPress. Это полезно, если вы хотите добавить удаление ревизий в административный интерфейс или запускать периодически через WP-Cron.

Пример функции для удаления ревизий в WordPress, которую можно добавить в файл functions.php вашей темы или в отдельный плагин:

function omni_video_delete_old_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); // true для безвозвратного удаления
        }
    }
    return count($revisions);
}

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

add_action('admin_menu', 'omni_video_add_revision_cleaner_page');
function omni_video_add_revision_cleaner_page() {
    add_submenu_page('tools.php', 'Удалить ревизии', 'Удалить ревизии', 'manage_options', 'omni-video-clean-revisions', 'omni_video_revision_cleaner_page');
}

function omni_video_revision_cleaner_page() {
    if (isset($_POST['omni_video_delete_revisions'])) {
        check_admin_referer('omni_video_delete_revisions_nonce');
        $deleted = omni_video_delete_old_revisions();
        echo "<div class=\"updated notice\">Удалено ревизий: $deleted</div>";
    }
    echo '<form method="post">';
    wp_nonce_field('omni_video_delete_revisions_nonce');
    echo '<input type="submit" name="omni_video_delete_revisions" class="button button-primary" value="Удалить все ревизии" />';
    echo '</form>';
}

Дополнительные способы оптимизации базы данных WordPress

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

  • Ограничение числа ревизий: В файле wp-config.php можно задать константу WP_POST_REVISIONS, чтобы ограничить количество сохраняемых ревизий. Например, чтобы хранить не более 3 ревизий:
define('WP_POST_REVISIONS', 3);
  • Оптимизация таблиц: Регулярно запускайте OPTIMIZE TABLE или используйте плагины для оптимизации, например WP-Optimize.
  • Очистка метаданных: Удаляйте старые или неиспользуемые метаданные и транзиенты через SQL или плагины.

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

Популярные плагины для управления ревизиями и оптимизации базы данных

Если всё же хотите использовать плагины, вот несколько проверенных решений:

  • WP-Sweep: Позволяет удалять ревизии, метаданные, спам-комментарии, транзиенты и оптимизировать таблицы базы данных одним кликом.
  • Advanced Database Cleaner: Предоставляет расширенный функционал для очистки и оптимизации базы, включая ревизии, авточерновики и пр.
  • WP-Optimize: Многофункциональный плагин для очистки и кеширования, также умеет удалять ревизии и оптимизировать таблицы.

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

Как защитить видео контент в WordPress от скачивания
22.12.2025
Как создать собственный шорткод для видео в WordPress
21.11.2025
Как автоматически отключать видео на мобильных устройствах в WordPress
04.03.2026
Как запретить вставку видео в WooCommerce для неавторизованных пользователей
31.05.2026
Как запретить вставку видео в WooCommerce для неавторизованных пользователей
06.05.2026