При создании записей в WordPress по умолчанию включены ревизии — функция автоматического сохранения копий создаваемых документов на случай непредвиденных обстоятельств. Это значит, что существует возможность возврата к любой предыдущей редакции, пройдя несколько шагов назад.
Функция неплохая и, вероятно, востребована определенной частью пользователей CMS. Но, что касается лично меня, то я не могу припомнить последнего случая, когда использовал эту возможность. Тогда возникает резонный вопрос: «А зачем она мне нужна?» Думаю, что многие считают так же. При создании очередных статей сохраненных копий накапливается все больше. Казалось бы, ну и пусть себе накапливаются, НО хранятся то они в базе данных в таблице wp-posts.
И, если на вашем проекте в наличии, скажем, в пределах 500 статей и на каждую имеется немалое число ревизий, нетрудно представить, что на самом деле, объём вашего блога в этом случае увеличивается и растет нагрузка на БД. Что же можно сделать? Есть два варианта. Можно ограничить количество ревизий, либо вовсе от них избавиться. Начнем с более радикального варианта.
Как отключить ревизии в WordPress?
Не спешите выполнять что-либо! Вначале прочтите статью до конца и определитесь с выбором способа отключения ревизий!
Будем рассматривать этот вопрос в контексте с использованием новых версий WordPress (3.0.3 или новее).
1. В Notepad++ открываем файл wp-includes → default-constants.php. Сохраните его резервную копию на всякий случай;
2. В данном файле находим строку:
define('WP_POST_REVISIONS', true);
3. Внизу редактора увидите результат поиска. У меня получился такой результат:
«Line 321 define(‘WP_POST_REVISIONS’, true);»
4. В найденной строке 321 в коде делаем замену значения true на false;
5. Сохраняем изменения в файле default-constants.php.
Всё, ревизии отключены. Из правой колонки Опубликовать в админ-панели исчезнет запись о количестве редакций:
Примечание: при обновлениях WordPress функция сохранения ревизий может возобновиться, поэтому её отключение придется повторять при определенных типах этих обновлений.
Удаление оставшихся ревизий из БД
Как Вы поняли, добившись отключения ревизий, мы выполнили половину задачи. Сейчас нужно удалить те ревизии, которые остались записанными в базе данных. Для этого выполняем следующие пункты:
- Войдите в личный кабинет своего хостинга и откройте базу данных нужного сайта;
- Не забудьте сделать резервную копию БД. Это обязательное действие, оно сохранит вам время и нервы, если Вы умудритесь совершить непоправимую ошибку;
- В верхнем меню нажмите вкладку SQL и в поле для ввода команды вставьте SQL-запрос (используя клавиши ctrl +v):
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';
- Обратите внимание, что в запросе используются названия таблиц с префиксом wp_ . Если при установке WordPress, Вы указывали другой префикс, то проставьте его в данном SQL-запросе в названиях таблиц.
- Нажмите кнопку OK. Если в верхней части в специальном окне появится сообщение «Удалено xxx строк. (Запрос занял 0.xxxx сек.)», значит у Вас всё получилось:
Записи старых ревизий были удалены из БД и более не будут в неё записываться. Задача решена.
Как ограничить количество ревизий в WordPress?
Для ограничения количества ревизий понадобится тот же файл default-constants.php. Таким же образом находим строку:
define('WP_POST_REVISIONS', true);
Но, на этот раз значение true нужно заменить на числовое значение, соответствующее желаемому максимальному количеству ревизий, например, 5:
define('WP_POST_REVISIONS', 5);
После сделанных изменений в правой колонке в графе Опубликовать у меня снова появилась строка Редакции и количество не стало расти, почему-то, после 6+. Но, это не столь важно, главное, что количество ревизий можно ограничивать.
Примечание: эти изменения вступают в силу с момента создания новых записей и применимы как к ним, так и к старым записям в случае их корректировки.
Контроль ревизий с помощью плагинов
Нельзя обойти стороной существование плагинов для контроля ревизий, например, Revision Control. Плагин очень прост в применении и имеет русскоязычную версию. Предназначен он, разумеется, для удобства осуществления контроля за ревизиями. Он предоставляет возможность задавать максимальное количество ревизий, сравнивать разные варианты и удалять старые копии, когда их количество превышает заданное значение. Поиск и процесс установка плагина не представляют никакой сложности, поэтому этот пункт пропускаем. После установки и активации плагина переходим Настройки → Ревизии и производим несложную настройку:
Таким образом, использование плагина дает прекрасную возможность управления ревизиями в зависимости от ваших желаний. Но, для противников установки большого количества плагинов и любителей их замещения путем размещения или изменения кода, подойдет первый вариант. Выбирает каждый сам, что ему по душе.