Речь в сегодняшней статье пойдет про ревизии WordPress .
Ревизии WordPress — это автосохранения постов при редактировании. С одной стороны, это отличная функция: например, пишите вы статью не один час, как вдруг отключили электричество в квартире, или браузер завис, либо вкладку случайно закрыли… Когда у меня такое случилось первый раз, в голову сразу пришли мысли о том, как мне заново придется набирать текст, выравнивать изображения, в общем, делать все заново, но не тут-то было! WordPress автоматически сохранил весь мой пост! Не поверите, на сколько я был благодарен разработчикам за такую функцию.
Но есть и обратная сторона медали. По умолчанию, ревизии WordPress делаются каждые 60 секунд, и каждая ревизия записывается в базу данных. А теперь посчитайте, сколько у вас, в среднем, ревизий на пост и умножьте на количество постов в блоге. Дико много! Размер базы данных может на половину состоять из ревизий. У меня именно так и было. Посмотрите как уменьшился размер БД после удаления всех ревизий. В два раза!
Как отключить ревизии WordPress
Для отключения ревизий WordPress открываем файл wp-config.php, он лежит в корне вашего сайта.
Заходим в него и дописываем следующие строчки:
define("WP_POST_REVISIONS", 0);
Число в скобках показывает, сколько ревизий разрешено делать для одной записи. Еще можно указать интервал автосохранения в секундах (по умолчанию 60).
Всем привет, дорогие мои читатели сайт. Не так давно мы разбирали тему на wordpress. Но вот буквально на днях мне пришлось добавить еще один способ к этой статье. Крайне эффективный, когда вы ведете своё блог длительное время при условии, что этой фишки вы не знали.
Эти так называемые ревизии или по-другому редакции существуют еще со старых версий cms wordpress.
Зачем нужны ревизии постов?
Ревизии постов и страниц нужны только в теории. Дело в том что они сохраняют резервную копию вашей статьи в базе данных. Причем сохранение происходит при каждом вашем изменении.
Получается так, что в процессе написания статьи, когда вы нажимаете кнопку “Сохранить” – у вас создается копия вашей статьи с вашими изменениями. И в любой момент вы можете посмотреть список этих копий и выбрать наиболее подходящую и восстановить.
За всю мою практику мне приходилось восстанавливать копию из подобных резервов лишь однажды. Но тем не менее.
С виду, возможность кажется весьма полезной. Однако надо понимать, что каждое подобное сохранение – это лишняя нагрузка на базу данных, т.к. все копии хранятся именно в ней.
Вот вам пример из жизни. У меня в среднем на блоге было 4-5 ревизий каждой статьи. Представьте когда у вас будут сотни статей написано, а возможно, тысячи статей – удалив ревизии (редакциИ) постов – вы тем самым ускорите свой блог в 5 раз.
А что если у вас не 5 редакций, а 10 к каждому посту? Кстати, сколько у вас, если не секрет? Напишите об этом в комментариях пжлст.
Кстати, самое интересно, что когда вы даже не нажимаете на кнопку “Сохранить” – у вас ревизии постов создаются автоматически. Это называется автосохранение.
Как можно ограничить количество редакций постов?
Мы уже знаем, что все редакции хранятся в базе данных. Чтобы их количество изменить, нам пригодится стандартный “фильтр”, который называется так wp_revisions_to_keep , или с помощью директивы WP_POST_REVISIONS в файле wp-config.php .
Кстати, у меня, почему-то директива в файле wp-config – не сработала. Напишите, у кого она работает в новых версиях WordPress ?
Итак, допустим, мы хотим оставить возможность сохранения ревизий, но оставить, скажем, только 3шт. Для этого нам нужно написать следующее:
Function my_revisions_to_keep($revisions) { return 3; } add_filter("wp_revisions_to_keep", "my_revisions_to_keep");
С помощью wp_revisions_to_keep можно еще ограничивать количество копий в разных типах постов. Точнее в одном типе – одно количество ревизий, в другом – другое.
Ну вот, например, допустим, вам нужно 5 ревизий для страниц и 3 ревизии для статей (постов) и остальных типов записей.
Function my_revisions_to_keep($revisions, $post) { if ("page" == $post->post_type) return 5; else return 3; } add_filter("wp_revisions_to_keep", "my_revisions_to_keep", 5, 2);
Можете еще попробовать использовать WP_POST_REVISIONS в файле wp-config.php , но этот способ не дает возможности разделить на типы записей.
define("WP_POST_REVISIONS", 3);Как отключить и/или удалить редакции в wordpress
Таким же макаром вы сможете отказаться от ревизий вообще. Нужно просто цифру 0 поставить в ограничениях.
Function my_revisions_to_keep($revisions) { return 0; } add_filter("wp_revisions_to_keep", "my_revisions_to_keep");
Или с помощью файла wp-config.php :
Define("WP_POST_REVISIONS", 0);
Самое главное. Отключение ревизий – никак не повлияет на их существование (уже существующих). т.е. если у вас было к каждой статье по 3-5 ревизий и вы отключили ревизий – старые копии постов все равно останутся. Их нужно удалять руками через БД.
Как же удалить все ревизии, редакции
Итак, мы отключили редакции. МЫ уже знаем что просто отключить редакции – мало. Надо их вырвать с корнем, удалить в ручную через MySQL.
Начнем, пожалуй. Но, перед тем как что-то удалять – сделайте Бекап. Лучше сделать бекап всего сайта.
DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = "revision" AND post_name LIKE "%revision%");
Нечто похожее делаем для таксономий
DELETE FROM wp_term_relationships WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type = "revision" AND post_name LIKE "%revision%");
Ну и естественно, удаляем сами редакции (ревизии).
DELETE FROM wp_posts WHERE post_type = "revision" AND post_name LIKE "%revision%";
Этот запрос в MySQL удалит вообще все ревизии что есть в вашей базе. Кроме автосохранений.
Автосохранение – тоже считается ревизией, но они не удаляются и не отключаются!! Поэтому чтобы их было как можно меньше – пишите тексты заранее в ворде, а потом просто вставляйте в админку!
Небольшое напоминание о том как работать с MySQL
Если вдруг забыли.
Я работаю с хостингом adminvps , я даже рассказывал почему именно с ним – в этой статье. Так вот, я буду показывать всё на нем.
Заходим в phpMyAdmin в вашей контрольной панели управления хостингом.
Вводим логин и пароль.
Выбрали нужную нам базу данных и нажали кнопку SQL , которая находится сверху.
И мы видим большое поле для того чтобы писать SQL запросы. Для всей БазыДанных.
Туда мы и вписываем все запросы по порядку.
Не беспокойтесь если увидите нулевые значения, значит вы просто не использовали левых типов записей или таксономий.
А вот что я получил, используя последний запрос.
Посмотрите как после этого мой блог стал шустрее. Это же сказка просто!
Я уверен, что тоже самое есть и у вас! Проверьте и отпишите мне потом об этом.
Плагин для работы с редакциями постов
Могу посоветовать еще плагин Revision Control, он позволяет сделать тоже самое что я описал, только в более комфортном для вас режиме. Прямо в админке.
Если у вас все еще остались вопросы – задавайте, я буду рад вам помочь. На этом пока всё. Спасибо за внимание.
При написании и редактировании записей в WordPress происходит их автоматическое сохранение — делается резервная копия записи (ревизия). С помощью ревизий можно восстанавливать статью, перейдя на несколько шагов назад. Чтобы восстановить статью необходимо лишь выбрать требуемую ревизию.
Однако, ревизии – это не всегда хорошо. Для хранение резервных копий записей и статей требуются дополнительные ресурсы сервера. Ревизии засоряют базу данных, поэтому стоит подумать нужны ли они вообще. Часто ли мы при редактировании статей в WordPress пользуетесь ревизиями? Если нет, то их можно отключить.
Отключение ревизий в WordPress
Для того, чтобы отключить ревизии в WordPress до версии 3.0.3 необходимо перейти к файлу конфигурации «config.php» и открыть его с помощью текстового редактора, например, Notepad++. После этого необходимо найти строку:
define("WP_POST_REVISIONS",0);
В случае, если у нас WordPress версии 3.0.3 или более новой — отключение ревизий происходит в файле «default-constants.php» (находится в папке «wp-includes»). Ищем строку:
define("WP_POST_REVISIONS", true);
После этого меняем true на false, как показано ниже:
define("WP_POST_REVISIONS", false);
Сохраняем файл «default-constants.php». Таким образом, ревизии будут отключены.
Все созданные ревизии в WordPress можно легко удалить. Для того, чтобы удалить старые ревизии необходимо зайти phpMyAdmin и выбрать базу данных. Затем нужно перейти на вкладку SQL и в открывшемся окне в поле ввода вставить строку:
DELETE FROM wp_posts WHERE post_type = "revision";
Пример показан на рисунке:
Затем нажимаем кнопку «ОК» и все сохраненные ранее ревизии будут удалены. Такой способ удаления ревизий подходит для всех версий движка WordPress.
По умолчанию WordPress сохраняет все ревизии записей и статей при промежуточных сохранениях в процессе их редактирования. Вместе с ревизиями в базе данных может сохранятся и другая информация: их мета-данные и таксономия. Вряд ли они могут оказать какое-либо негативное влияние на небольшой сайт, но со временем база данных будет разрастаться, а ревизии в ней будут занимать значительно больший объем, чем опубликованные страницы и записи.
Перед отключением ревизий и удалением старых редакций не забудьте сделать резервные копии файлов и базы данных вашего сайта.
Отключение или ограничение ревизий
Сохранение ревизий записей и страниц в базе данных сайта WordPress можно отключить или ограничить их количество. Для этого необходимо открыть файл wp-config.php и, чтобы отключить сохранение ревизий полностью, добавить строку:
Define("WP_POST_REVISIONS", false);
Для того, чтобы ограничить количество сохраняемых редакций, замените в добавляемой строке слово false на число, соответствующее желаемому количеству сохраняемых ревизий. Например, для сохранения 3 ревизий добавляемая строка будет выглядеть так:
Define("WP_POST_REVISIONS", 3);
Число 0 в этом выражении будет соответствовать ключевому слову false .
Обратите внимание на то, что добавляемая строка должна быть размещена в файле wp-config.php после строки:
Define("WP_DEBUG", false);
и перед строкой:
У меня добавлено так:
Define("WP_DEBUG", false); /* Отмена или ограничение количества редакций */ define("WP_POST_REVISIONS", false); /* Это всё, дальше не редактируем. Успехов! */
Удаление всех старых редакций
Если вы не сразу отключили сохранение ревизий, то их могло уже набраться достаточно много и, если есть желание, старые редакции можно удалить. Для этого необходимо войти в приложение phpMyAdmin, выбрать базу данных и перейти на вкладку SQL:
Перед удалением всех ревизий из базы данных сайта WordPress, необходимо удалить сначала их мета-данные и таксономию, если они имеются. Скопируйте и вставьте в поле ввода по очереди следующие три команды и нажмите кнопку «Вперёд». Если при установке WordPress вы указали для таблиц базы данных префикс отличный от «wp_», замените в командах ниже «wp_» на свой префикс.
Удаление мета-данных
DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = "revision" AND post_name LIKE "%revision%");
и нажимаем кнопку «Вперёд».
Удалении таксономии
копируем и вставляем в поле ввода SQL-запроса следующую строку:
DELETE FROM wp_term_relationships WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type = "revision" AND post_name LIKE "%revision%");
и нажимаем кнопку «Вперёд».
Удаление всех ревизий
копируем и вставляем в поле ввода SQL-запроса следующую строку:
DELETE FROM wp_posts WHERE post_type = "revision" AND post_name LIKE "%revision%";
и нажимаем кнопку «Вперёд».
После выполнения каждой команды вы увидите в информационном окне сколько удалено строк из базы данных.
После создания очередного сайта на WordPress вспомнил о ревизиях, когда почти закончил работу над первой записью. При удалении получены следующие результаты:
- мета-данные - удалено 0 строк;
- таксономия - удалено 0 строк;
- ревизии - удалено 33 строки.
При редактировании одной записи, которое еще не закончено, было создано 33 ненужных мне ревизии. Мета-данных и таксономии, связанных с ревизиями, создано не было.