Как отключить, ограничить, удалить ревизии WordPress

При создании, редактировании и сохранении статей и их черновиков в WordPress по умолчанию автоматически создаются резервные копии записей, обычно именуемые как Pевизии или Редакции (revisions).
Сохранение ревизий дело конечно полезное, так как например при ошибках в форматировании материала, сбоях вашего компьютера или сервера вам предоставляется возможность восстановить любую из предыдущих версий вашей записи. Но функционал сохранения ревизий имеет и отрицательную сторону.

Ревизии, редакции записей WordPress


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

Увидеть список доступных ревизий Вы можете в нижней части страницы редактирования записей:

Ревизии, редакции записей WordPress

Ревизии, редакции записи WordPress

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

Но только не забудьте перед внесением модификаций создать резервную копию базы данных!

Отключение ревизии в WordPress

Для того, чтобы отключить создание ревизий (редакций), нужно добавить одну строчку в файл wp-config.php

        define('WP_POST_REVISIONS', 0);

или:

        define('WP_POST_REVISIONS', false);

Есть еще и другой вариант отключения ревизий — изменить одно из значений с «true» на «0» или «false» в функции wp_functionality_constants(), которая находится в файле /wp-includes/default-constants.php

function wp_functionality_constants( ) {
        ...

        if ( !defined('WP_POST_REVISIONS') )
                define('WP_POST_REVISIONS', false);
        ...

Ограничить количество ревизий в WordPress

Для того, чтобы ограничить количество ревизий (редакций), нужно добавить одну строчку в файл wp-config.php, как было при отключении ревизий, но вместо значения «0» или «false» указать целое число:

        define('WP_POST_REVISIONS', 3);

В этом случае будет создаваться максимум 3 ревизии на одну статью, плюс одна копия «Автосохранение».

Заметка на память:
Внесение выше указанных изменений сразу не уменьшит количество ревизий, которые уже существуют в базе данных. Но изменения вступят в силу при обновлении уже существующих записей, причем по отдельности. Они также будут учтены при создании новых записей. Еще стоит учесть, что в режиме редактирования кроме ревизий в базе данных каждые 60 секунд будет записываться одна единственная копия записи как «Автосохранение».

Удалить все ревизии WordPress из базы данных

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

Внимание! Не забудьте перед удалением всех ревизий создать резервную копию базы данных! Иначе восстановить удаленные ревизии уже будет не возможно.

Итак, нам понадобится выполнить несколько действий:

1. Войдите в панель управления базами данных, например в phpMyAdmin;
2. Выберите по имени базу данных, которая используется вашим блогом;
3. Кликните по кнопке (или закладке) с надписью «SQL» (обычно она находится вверху страницы);
4. В поле для SQL-запросов введите этот запрос:

        DELETE FROM wp_posts WHERE post_type = "revision";

5. Нажмите кнопку «Ok», чтобы выполнить запрос;

Вот и все. Теперь база данных вашего блога, а конкретнее таблица wp_posts, намного уменьшилась в размере.

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

Метки: WordPress, ревизии, редакции

Поделитесь материалом с другими, воспользуйтесь этими кнопками:
Получать обновления и новые материалы блога по E-mail

24 комментария к “Как отключить, ограничить, удалить ревизии WordPress”

  1. esst:

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

    Ответить
  2. esst:

    извиняюсь, я там неглядя английскими написал, хотел написать «одной командой» :(

    Ответить
  3. Юрий:

    Плагин wp-optimize, если не ошибся в обозначении, тоже помогает, но ваш вариант получше будет.

    • Да, есть такой, WP-Optimize. Но кроме него еще и другие есть плагины, которые помогают настроить управление ревизиями, почистить базу данных и т.д. Я сам лично просто предпочитаю не использовать много плагинов, поэтому все, что не слишком сложно и что не приходится делать слишком часто, делаю вручную :)

      Ответить
  4. Евгений:

    Отлично! Спасибо, удалил 287 ревизий!

    Ответить
    • Поздравляю! :)
      Мне на днях один чел отписывался, что мол удалил около 2000 ревизий и потом испугался, когда увидел, что на сервере в базе данных места много стало, подумав, что базу грохнули, а потом понял, что это за два года у него столько хлама накопилось :)

      Ответить
  5. Простой:

    Классная статья! )) Ревизии удалены.

    Ответить
  6. Rymljanyn:

    Отлично узнавать новое и нужное новичку. Автору СПС

    Ответить
  7. Natalya:

    Ох непростая это работа — изучать wordpress. Я даже и не предполагала, что у меня столько черновиков накопилось!

    Ответить
  8. Михаил:

    Спасибо! Я тоже не думал, что старья храню, хотя догадывался =)
    Теперь буду убирать =)

    Ответить
  9. Леся:

    Полезная статья и вовремя — как раз мучилась с одним своим сайтом на вордпрессе как уменьшить БД

    Ответить
  10. bumer:

    Сколько должны весть база данных вордпресс, чтобы она медленей грузилась?
    У меня было около 100 записей, в приницпе все норм было. Я так думаю если будет более 2000 записей, то бд возможно будет медленей грузится. Но тут и на сайт надо будет смотреть по другому тогда.

    Ответить
    • Скорость работы БД зависит не только от ее размера, а от многих факторов, начиная от скорости работы самого хостинга, типа тарифного плана, но как правило больше всего начинаются тормоза, когда в БД очень много записей и таблицы БД сильно дефрагментированы (т.е. если очень много раз в таблицах производились удаления, добавления, изменения записей).
      Решение проблем: кроме удаления лишнего хлама нужно обязательно регулярно производить «нормализацию» отдельных таблиц, ну или всей БД вцелом. Это делается либо вручную из панели управления базой данных, либо скриптами, которые запускаются по расписанию (CRON-задания).

      Ответить
  11. Алексей:

    Спасибо за статью! займусь чисткой!

    Ответить
  12. kapten:

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

    Ответить
  13. Алексей:

    Я на втором сайте так и сделал, все работает

    Ответить
  14. Rockyou:

    Мне нравится наоборот, что вордпресс сам автосохраняет статьи, превращает их в черновики. Всякое бывает, например, ошибка браузера, кошка провод заденет, кофе на клавиатуру прольешь. Впрочем, в некоторых случаях приходится проделывать такие манипуляции.

    Ответить
  15. Ирина:

    Спасибо за статью, я совсем новичок и , к сожалению, у меня не получилось удалить редакции статей. Помогите разобраться. Еще у меня есть проблема : пропала строка форматирования (с кнопками) текстовом в редакторе. Теперь пропала возможность редактирования текстов. Очень прошу — Помогите. Не могу найти , как с этим справиться? Спасибо заранее

    Ответить
    • Ирина, напишите подробнее, что Вы делали, после чего Вам не удалось удалить редакции. Пробовали ли Вы выполнить SQL-запрос в панели управления базой данных?

      DELETE FROM wp_posts WHERE post_type = "revision";
      

      Этот пример учитывает, что префикс таблиц вашей базы данных таков: «wp_». Если у Вас префикс другой, то просто замените в запросе на ваш префикс.

      По поводу «пропала строка форматирования (с кнопками)»…
      Вспомните, что Вы делали в последнее время на сайте, после чего пропали элементы форматирования.
      Если ставили или активировали какие-то новые плагины, то отключите их, и проверьте, появились ли элементы форматирования.
      Если у Вас есть бэкапы сайта, то сверьте содержимое последних бэкапов с нынешними файлами вашего блога.

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

      Ответить
  16. Артём:

    Беда, wordpress версии 3.5.1 не удалось отключить сохранение ревизий ни одним из приведённых выше способов? Почему так? Эта информация не актуальная для обновлённой версии?

    Ответить
    • Артём, а какими конкретно способами Вы пользовались? Можно подробнее? Описанные здесь методы работают и на WordPress 3.5.1 — проверено.

      Ответить
      • Женя:

        Дело в том, что начиная с указанной версии в файле wp-config.php уже не присутствует такая строчка, а вынесена в другой файл default-constants.php , там в строке define (‘WP_POST_REVISIONS’, true); меняем значение на define (‘WP_POST_REVISIONS’, false);

        Ответить
        • Женя,
          в файле default-constants.php (даже в WordPress 3.6 RC1) всего лишь идет проверка, объявлена ли константа WP_POST_REVISIONS ранее, и если она нигде не была объявлена (например в файле wp-config.php), то она объявляется в файле default-constants.php:

          if ( !defined('WP_POST_REVISIONS') )
             define('WP_POST_REVISIONS', true);
          

          Так что можно объявлять WP_POST_REVISIONS как и раньше, в файле wp-config.php. В отношении ревизий все будет работать по прежнему алгоритму. Ну а для подстраховки можно конечно изменить значения в обоих файлах.

          Другое дело, если в более новых версиях уберут проверку, и в файле default-constants.php константа WP_POST_REVISIONS будет объявляться без проверки, то естественно нужно уже будет менять ее значение именно в файле default-constants.php.

          Ответить

Оставить комментарий к Юрий

Нажмите, чтобы отменить ответ.

Подписаться на обновления блога 4remind.ru по RSS
Новости блога в социальных сетях

Новости блога 4remind.ru в Твиттере Персональная страница блога 4remind.ru в Facebook Персональная страница блога 4remind.ru в Google+ Новостная лента блога 4remind.ru в FriendFeed

4remind.ru - персональный блог вебмастера