НЕ ПРОПУСТИТЬ ИНТЕРЕСНОЕ

Свежие обсуждения

Sorry. No data so far.

Один пишем, три в уме — редакции записей в WordPress и очистка базы данных

Здравствуйте, уважаемые читатели блога www.ithabits.ru. Если активно редактировать тексты статей на сайте, работающем на CMS WordPress, то очень скоро объем базы данных сайта увеличится многократно.

Дело в том, что начиная с версии 2.6 в WordPress был добавлен очень полезный и нужный механизм ревизий (редакций) записей.

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

Ревизии в WordPress позволяют избежать потери данных за счет того, что все предыдущие версии записей не удаляются из базе данных, а лишь получают другой статус — «revision»

В слове “все” предыдущего абзаца как раз и кроется причина неограниченного роста размера базы данных. Каждая редакция (ревизия) записи содержит ее полное содержание. А это значит, что если в процессе подготовки какой-либо статьи вы исправили и перезаписали ее, скажем, 10 раз, то в базе данных будет сохранено 10 копий. Если вы исправите всего один знак, в базу еще раз добавится текст целиком.

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

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

Управление количеством ревизий записей в WordPress

Для управления механизмом сохранения редакций записей в WordPress в файл конфигурации “wp-config.php” после:
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
необходимо добавить всего лишь одну запись.
Для ограничения количества редакций тремя экземплярами:
define('WP_POST_REVISIONS', 3);Вместо “3” может быть любое нужное вам значение. “0” отключит сохранение ревизий. Такой же результат будет достигнут, если вместо цифры написать “false”:
define('WP_POST_REVISIONS', false);
Если по какой-либо причине нужно вновь разрешить сохранение всех редакций без удаления данной строки из “wp-config.php”, то можно написать:
define('WP_POST_REVISIONS', true);

Тип ревизий записей в WordPress

В свою очередь редакции делятся на две категории:

  1. редакторские ревизии — предыдущие версии текстов, появившиеся после публикации или сохранения редактором (автором) обновленной записи;
  2. автосохраненные ревизии — автоматически создаются через определенные временные интервалы.

Как интересно. Пока писал этот пост заметил интересную особенность. Если запись находится в статусе «Черновик», то автосохраненные редакции у нее отсутствуют. Выходит, что на черновик автосохранение не распространяется. Стало быть, забывать нажимать на «Сохранить» при работе с черновиком в редакторе WordPress не стоит.

Количество автосохраненных редакций для записи всегда равно единице. То есть, если задать общее количество сохраняемых редакций равным, например, трем, то авторскими из них будут две. Автосохраненые ревизии никогда не перезаписывают авторские.

Автосохранение позволяет не потерять недавно набранные данные в том случае, если автор забыл сохранить их принудительно (получается, что на черновик это не распространяется).

Изменить интервал автосохранения можно добавив в файле конфигурации WordPress “wp-config.php” строку:
define('AUTOSAVE_INTERVAL', 60);где 60 – интервал в секундах, соответствующий установленному по умолчанию. Его можно скорректировать в любую нужную сторону.

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

Очистка базы данных WordPress

Если надо удалить все релизы, то сделать это можно без установки плагинов непосредственно в базе MySQL через phpMyAdmin.

Очистка базы данных WordPress

Заходим в phpMyAdmin и выбираем нужную базу в левом столбце интерфейса. Начинаем, естественно, с бекапа базы.

Бекап базы данных

Переходим на вкладку “Экспорт”:

Бекап базы данных в phpMyAdmin

 

 

 

 

 

 

 

 

 

В открывшемся окне оставляем настройки без изменений. Нажимаем “ОК” в правой нижней части экрана и ждем завершения операции сохранения бекапа базы данных.

Запросы к базе данных на удаление ревизий и оптимизацию таблицы wp_posts

Переходим на вкладку “SQL”. В поле запросов к базе данных пишем:
DELETE FROM wp_posts WHERE post_type = "revision";
OPTIMIZE TABLE wp_posts;

<Удаление ревизий записей в базе данных WordPress в phpMyAdmin

 

 

Нажимаем “OK”, подтверждаем желание выполнить запросы к базе.

 

 

 

 

 

 

После успешного завершения запросов должно появиться сообщение такого вида:

phpMyAdminDeleteRevisionOK

 

 

 

 

 

 

 

При желании можно писать и выполнять запросы последовательно.

Если после сделанных операций вновь посмотреть на размер базы данных (для простейшего сравнения можно не выходя из phpMyAdmin повторить бекап базы в новый файл), то можно с радостью убедиться, что он уменьшился в несколько раз.

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

Плагины для управления ревизиями записей в WordPress

В заключение, для тех кто по какой-либо причине не хочет править конфигурационные файлы или работать непосредственно с базой данных через phpMyAdmin, пара плагинов, выполняющих аналогичные функции.

Очень простой плагин DelRevisions — он служит исключительно для удаления ненужных ревизий из базы данных MySQL. Скачать его можно здесь.

На официальном сайте wordpress.org можно найти плагин Revision Control. Он позволяет настраивать количество сохраняемых ревизий.

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

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

Всем успешной работы.

Комментарии: 2. Присоединяйтесь к обсуждению!

  1. Спасибо за понятное и детальное объяснение!
    А то самому без шпаргалки влазить в БД и конфиг файлы ВП страшновато )))

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

Написать комментарий

Subscribe without commenting