wpmoney.ru wordpress WP Money

Удаление старых версий постов в WordPress через базу данных без плагинов

Почему стоит удалять старые версии постов (ревизии) в WordPress

WordPress по умолчанию сохраняет все версии (ревизии) записей и страниц для возможности восстановления и сравнения изменений. Однако в долгосрочной перспективе это приводит к огромному объему данных в таблице wp_posts, что замедляет работу сайта и усложняет резервное копирование.

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

Как диагностировать количество ревизий в базе данных

Чтобы оценить, сколько ревизий накопилось, подключитесь к базе данных через phpMyAdmin или терминал и выполните запрос:

SELECT post_type, COUNT(*) as revisions_count FROM wp_posts WHERE post_type = 'revision' GROUP BY post_type;

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

Пошаговое удаление старых ревизий через SQL-запрос

1. Резервное копирование базы данных

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

2. Удаление ревизий

Для удаления всех ревизий выполните в базе данных следующий SQL-запрос:

DELETE FROM wp_posts WHERE post_type = 'revision';

Если у вас нестандартный префикс таблиц, замените wp_ на ваш префикс.

3. Очистка метаданных ревизий

Чтобы удалить данные, связанные с ревизиями, очистите таблицу wp_postmeta:

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

Этот запрос удалит все метаданные, которые не связаны ни с одним постом (например, с удалёнными ревизиями).

Проверка результата после удаления ревизий

Повторите запрос диагностики:

SELECT post_type, COUNT(*) as revisions_count FROM wp_posts WHERE post_type = 'revision' GROUP BY post_type;

Должно быть 0 записей.

Также проверьте размер таблиц через phpMyAdmin или команду SHOW TABLE STATUS LIKE 'wp_posts'; — размер таблицы должен уменьшиться.

Частые ошибки при удалении ревизий и как их исправить

  • Ошибка удаления из-за внешних ключей: В некоторых конфигурациях базы данных могут быть ограничения. В этом случае отключите внешние ключи перед удалением:
    SET FOREIGN_KEY_CHECKS=0; DELETE FROM wp_posts WHERE post_type = 'revision'; SET FOREIGN_KEY_CHECKS=1;
  • Удаление не того типа контента: Убедитесь, что удаляете именно ревизии, а не другие типы постов. Запрос должен содержать post_type = 'revision'.
  • Проблемы с префиксом таблиц: Проверьте, что используете правильный префикс таблиц, он может отличаться от wp_.

Практические советы по оптимизации и безопасности

  • Для предотвращения накопления ревизий в будущем можно ограничить их количество, добавив в wp-config.php:
    define('WP_POST_REVISIONS', 3);
    Это сохранит максимум 3 ревизии на запись.
  • Регулярно планируйте оптимизацию базы данных с помощью WP-CLI:
    wp db optimize
  • Используйте wp cron для автоматизации очистки ревизий с помощью пользовательских скриптов.

Сравнение способов удаления ревизий

МетодПреимуществаНедостатки
Через SQL-запрос напрямуюБыстро, не требует плагинов, полный контрольНужны навыки работы с базой, риск ошибок без бэкапа
Плагины (например, WP-Sweep, WP-Optimize)Простота для новичков, автоматизацияНагрузка на сайт во время работы, ограниченный контроль
Использование WP-CLIУдобно для администраторов серверов, можно автоматизироватьТребуется SSH-доступ и базовые навыки командной строки

Пример автоматического удаления ревизий через WP-CLI

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

Эта команда удалит все ревизии принудительно.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше