Как удалить редакции в wordpress. Управление ревизиями WordPress

Редакции (или ревизии) в WordPress существуют уже давно. Они позволяют сохранять резервную копию записи или страницы при каждом изменении, а затем просматривать все версии с возможностью восстановить любую из них.

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

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

Ограничение количества редакций

По умолчанию WordPress хранит все редакции для записей и страниц. Это легко изменить с помощью фильтра wp_revisions_to_keep в вашем плагине, или с помощью константы WP_POST_REVISIONS в файле конфигурации wp-config.php . Например, если нам нужно сохранять только 5 последних версий записей и страниц, наш плагин будет выглядеть так:

/** * Plugin Name: My Revisions Config */ function my_revisions_to_keep($revisions) { return 5; } add_filter("wp_revisions_to_keep", "my_revisions_to_keep");

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

Function my_revisions_to_keep($revisions, $post) { if ("page" == $post->post_type) return 10; else return 5; } add_filter("wp_revisions_to_keep", "my_revisions_to_keep", 10, 2);

Вы так же можете установить ограничение с помощью директивы WP_POST_REVISIONS в файле конфигурации WordPress wp-config.php , но разделение на типы записей с помощью этого метода уже сделать будет невозможно:

Define("WP_POST_REVISIONS", 5);

Как отключить редакции

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

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);

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

Как удалить все редакции

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

Перед тем, как удалить все редакции, необходимо удалить их мета-данные и таксономию, если они имеются. Сделать это можно с помощью запроса:

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%";

Данный запрос удалит все редакции из базы данных WordPress, за исключением автосохранений. Перед исполнением любых подобных запросов, рекомендуем сделать резервную копию вашей базы данных MySQL.

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

Если у вас возникли проблемы или вопросы при управлении редакциями в WordPress — оставьте комментарий и мы с радостью вам ответим.

Большинство пользователей WordPress даже не подозревают о таком понятии, как “ревизии WordPress”, однако полезно представлять, что это такое, а в некоторых редких случаях желательно знать, как эти ревизии отключить.

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

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

Увидеть сформированные ревизии (в терминах русского WordPress) вы можете под окном редактирования.

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

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

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

Настройка ревизий

Как же удалить редакции Wordpress? Во-первых, можете указать в файле wp-config.php (находится в корневой папке вашего сайта) следующую инструкцию:

define("WP_POST_REVISIONS", 0);

что означает сохранение только трех последних ревизий.

Удалить ревизии, которые уже накопились в базе данные можно, по крайней мере, двумя способами.

1. Удаление прямо в базе

Заходим в phpMyAdmin затем в нужную базу данных. Затем в верхнем меню переходим на вкладку – «SQL». Появится окно, в котором нужно ввести SQL команду:

И жмем внизу кнопку – «OK» (или “Вперед”). Все, редакции удалены.

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

Как вы видите, вопросов для изучения достаточно много. Правда, для многих владельцев интернет ресурсов она будет не нова, но “самые умные” мой блог не читают, его читают те, кто хочет научиться. Новичкам для создания популярного, надежного и стабильного сайта, необходимо разбираться во всех все технических тонкостях и иметь практическое понятие о ревизиях и еще много о чем. Будем учиться.

Что такое ревизии в WordPress

Может быть, вы замечали, что во время написания поста или редактирования, система в автоматическом режиме делает его копию – резервное сохранение. В это время кнопка «Опубликовать» и «Сохранить», расположенные в окне справа, становятся не активными. Именно это действие и называется ревизией.

Ревизии в WordPress – это автоматическое резервное сохранение содержимого записи или страницы во избежание потери данных. Из них можно восстановить более ранние копии документов.

Многие, наверное, догадались о том, что ревизии WordPress служат для того, чтобы избежать потери данных. Они настраиваются в автоматическом режиме и делают резервную копию через определенный промежуток времени (каждые 60 секунд). Они складываются в базу данных (MySql - phpMyAdmin). Посмотреть список ревизий в WordPress можно чуть ниже окна правки записи (в режиме редактирования). Если прокрутить страницу, то чуть ниже их можно увидеть в окне «Редакции». Выглядят они следующим образом:

Наверное, у вас уже возник вопрос «Зачем удалять или отключать ревизии?», если они исполняют такую полезную роль. Вся проблема состоит в том, что копии записей, статей или постов очень загружают базу данных, в которую они заносятся. Это приводит не только к будущей проблеме ее редактирования и внесения изменений, но и к медленной загрузке страниц сайта. Советую прочитать пост « ». Поисковые системы стали обращать особое внимание на этот параметр. Так же, кстати, от этого напрямую зависит поведенческий фактор, показатель которого формируется из оценки поведения пользователей.

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

Как удалить ревизии в WordPress

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

Способ №1. Плагин Better Delete Revision

Мы будем использовать специально созданный плагин для удаления ревизий – Better Delete Revision. Скачайте его через адмику и установите. После активации в разделе настройки появится пункт с названием аналогичным имени плагина – это настройки.

Можете сразу оптимизировать базу данных или перейти во вкладку “Проверить записи ревизий” и уже из нее почистить свой блог от лишних копий документов.

Способ №2.Удаление прямо из базы данных

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

После выбора нужной базы, найдите вкладку «SQL», откройте ее так, чтобы перед вами появилось пустое поле.

В него вам нужно скопировать расположенный ниже код и нажать на кнопку «ОК». Этим действием вы сделаете SQL запрос на удаление ревизий из базы данных.

DELETE FROM wp_posts WHERE post_type = «revision»;

Должно получиться как на картинке:

Если ваши действия окажутся удачными, то в ответ вы увидите сообщение следующего вида. Если ранее ревизии вы не удаляли или не отключали, то количество строк будет отличным от нуля.

Как отключить ревизии WordPress

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

Чтобы отключить ревизии, вам надо пройти на хостинг и отредактировать файл wp-config.php, который расположен в корневой папке. В него вставьте код с параметром:

Define("WP_POST_REVISIONS", 3);

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

После окончания внесения изменений нажмите на кнопку «Сохранить». Теперь ваша база не будет раздуваться как тесто на дрожжах при каждой правке статей.

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

По умолчанию 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 ненужных мне ревизии. Мета-данных и таксономии, связанных с ревизиями, создано не было.

Всем привет, дорогие мои читатели сайт. Не так давно мы разбирали тему на 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, он позволяет сделать тоже самое что я описал, только в более комфортном для вас режиме. Прямо в админке.

Если у вас все еще остались вопросы – задавайте, я буду рад вам помочь. На этом пока всё. Спасибо за внимание.