n-wp.ru — блог о WordPress

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

Каждый раз, когда вы редактируете какой-нибудь пост, создается его ревизия – копия с предыдущим содержанием. Если вам что-то не понравится в новой редакции, то всегда есть предыдущая версия, к которой вы можете вернуться. А если все нравится, и возвращаться к предыдущей редакции поста нет больше смысла, то зачем ее хранить? А ведь это полноценная копия записи, которая занимает место на хостинге, место в базе данных, образуя целую кучу ненужных ссылок в админке.

Лично я почти всегда уничтожаю ревизии постов, а в некоторых богах вообще отключил их создание. Если нужно удалить пару-тройку ревизий, то нет ничего сложного. А если вы решили почистить весь блог от ревизий? Представляете, сколько вам нужно перелопатить всего, чтобы удалить уже ненужные ревизии, особенно если вы ведете блог года эдак с 2007? Вот тут как раз и может пригодиться всего лишь один простой запрос к базе данных напрямую, минуя WordPress и всякие плагины.

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

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

Если вы не хотите использовать этот способ, то можно установить плагин WP-Cleanup, который сделает то же самое. Так же есть плагин WP-Optimize, который уничтожает лишние данные, облегчая блог и оптимизируя его работу.

Если же вы не готовы отказаться от ревизий, а хотите всего лишь удалять те, у которых вышел определенный срок давности, то воспользуйтесь плагином WP-eDel post copies. Он будет чистить ваш блог от старых ревизий с определенной периодичностью. Если же вы вообще хотите отключить возможность создания ревизий постов, тогда посмотрите пост Как уменьшить нагрузку на блог: блокировка запросов на обновление и отключение автоматического управления ревизиями.

1 комментарий

  • Исправьте пожалуйста запрос к БД. Должно быть:
    DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = ‘revision’