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

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

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

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

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

  • Сократить размер базы данных.
  • Ускорить выполнение запросов к wp_posts и wp_postmeta.
  • Облегчить бэкап и восстановление сайта.

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

Как удалить уже существующие ревизии с помощью SQL-запроса

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

DELETE FROM wp_posts WHERE post_type = 'revision';

Если таблица имеет префикс отличный от wp_, замените его в запросе. Этот запрос мгновенно удалит все версии постов. Однако он не тронет связанные метаданные, которые могут храниться в таблице wp_postmeta. Чтобы удалить и их, выполните следующий запрос:

DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON pm.post_id = wp.ID WHERE wp.ID IS NULL;

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

Удаление ревизий через WP-CLI

Если у вас есть доступ к командной строке сервера и установлен WP-CLI, удалить ревизии можно быстро и безопасно командой:

wp post delete $(wp post list --post_type='revision' --format=ids) --force

Эта команда сначала получает список всех ревизий по ID, а затем удаляет их. Преимущество WP-CLI — безопасное удаление с учётом всех связанных данных и кэширования.

Как ограничить количество сохраняемых ревизий в WordPress

Для ограничения сохранённых ревизий используйте константу WP_POST_REVISIONS в файле wp-config.php. Добавьте или измените строку:

define('WP_POST_REVISIONS', 5);

Здесь число 5 означает, что будет сохраняться максимум 5 последних ревизий для каждого поста. Можно указать любое другое число, например, 3 или 10. Для полного отключения ревизий установите значение в false:

define('WP_POST_REVISIONS', false);

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

Программное удаление ревизий с помощью кода в functions.php

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

function wpcourse_delete_post_revisions() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
}
// Запускать функцию вручную или через cron
// add_action('init', 'wpcourse_delete_post_revisions');

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

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

Если вы предпочитаете готовые решения, обратите внимание на следующие плагины:

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

Все эти плагины можно найти на официальном репозитории WordPress или на wpshop.ru с UTM-метками.

Как автоматизировать очистку ревизий с помощью WP-Cron

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

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

function wpcourse_revision_cleanup_callback() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
}
add_action('wpcourse_revision_cleanup_hook', 'wpcourse_revision_cleanup_callback');

Этот код запустит удаление ревизий ежедневно. Вы можете изменить периодичность на 'weekly' или 'hourly' по необходимости.

Важные рекомендации и предостережения

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

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

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

Как автоматизировать удаление старых пакетов подключений в WordPress
22.03.2026
Как автоматизировать создание и отправку email отчёта в WordPress
10.01.2026
Как удалить старые псевдоверсии постов в WordPress: эффективные методы и примеры
13.04.2026
Как использовать REST API для создания нестандартных запросов в WordPress
09.04.2026
Как создать автоматические запросные формы в WordPress с применением WPRemark
27.01.2026

Хотите научиться создавать сайты и зарабатывать на этом от 30 000 рублей в месяц?

Записаться на курс сейчас