Как удалить старые редакции записей в wordpress. Редакции WordPress, ревизии и автосохранение. Как же удалить все ревизии, редакции

Добрый всем день. Сегодня я написал для вас чисто техническую статью, позволяющую оптимизировать базу данных 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?

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

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

Если Вы счастливый обладатель многофункционального премиум-плагина , то Вам не придется искать каких-либо других решений. Одной из его функций является полное отключение создания ревизий. Для этого нужно перейти в админ-раздел Clearfy Pro и на вкладке Дополнительно активировать настройку Отключить ревизии полностью .

Другие способы

Плагин Revision Control

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

Итак, после его установки и активации следует перейти в админке Настройки -> Revisions.

Вы можете отключить создание ревизий для нужного типа записей. Для этого служат соответствующие поля: Posts (Записи) и Pages (Страницы). Для сохранения всех изменений нужно нажать кнопку Save Changes.

Плагин Disable Post Revision

Disable Post Revision является отдельным плагином, выполняющим только одну функцию – полное отключение создания копий контента. Для этого его нужно просто установить и активировать. Основным преимуществом плагина является отсутствие каких-либо страниц настроек. Он начинает выполнять свою работу сразу после активации.

Всем привет, дорогие мои читатели сайт. Не так давно мы разбирали тему на 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 по умолчанию автоматически создаются резервные копии записей, обычно именуемые как Pевизии или Редакции (revisions).
Сохранение ревизий дело конечно полезное, так как например при ошибках в форматировании материала, сбоях вашего компьютера или сервера вам предоставляется возможность восстановить любую из предыдущих версий вашей записи. Но функционал сохранения ревизий имеет и отрицательную сторону.

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

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

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

Что такое редакции и для чего они нужны

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

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

Количество редакций в WordPress можно ограничить двумя способами:

  1. При помощи константы WP_POST_REVISIONS ;
  2. При помощи хука wp_revisions_to_keep (данный хук также позволяет выбрать тип записей, для которых устанавливается ограничение, будь то стандартные или произвольные типы записей).

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

Define("WP_POST_REVISIONS" , 1);

Теперь для каждого поста и страницы в базе будет храниться по одной ревизии.

Как я уже писал выше, хук wp_revisions_to_keep дает больше возможностей. Ниже представлен пример кода ограничения количества сохранения редакций с комментариями, который нужно добавить в файл functions.php Вашей темы:

/** * Ограничение количества сохранения ревизий при помощи хука wp_revisions_to_keep * @param integer $count - количество ревизий * @param object $post - объект записи */ function limit_save_revisions_db($count, $post) { if ($post->post_type == "page") {//для стандартных страниц WordPress сохраняем 1 ревизию return 1; } elseif ($post->post_type == "post") {//для стандартных записей WordPress сохраняем 3 ревизии return 3; } elseif ($post->post_type == "reviews") {//для произвольного типа записей "Отзывы" не сохраняем ревизий return 0; } else {//для всех остальных сохраняем 3 ревизии return 3; } } add_action("wp_revisions_to_keep", "limit_save_revisions_db", 10, 2);

Полное отключение и удаление ревизий

Если Вы решили вообще отключить редакции на своем сайте, то можно также воспользоваться хуком wp_revisions_to_keep , добавив в файл functions.php Вашей темы следующий код:

/* * Полное отключений редакций * @param integer $count - количество ревизий */ function deactivate_revisions($count) { return 0; } add_filter("wp_revisions_to_keep", "deactivate_revisions");

Кроме того, после полного отключения редакций их желательно удалить из базы данных. Ведь до отключения они все равно сохранялись и теперь будут лежать там ненужным «мертвым» грузом. Чтобы это сделать, нужно перейти в PHPMyAdmin , найти нужную базу и открыть в ней таблицу wp_posts . Далее нажимаем на вкладку SQL и выполняем следующий запрос:

DELETE FROM `wp_posts` WHERE post_type = "revision";

Теперь нужно удалить все метаданные (таблица wp_postmeta) и таксономии (таблица wp_term_relationships) редакций. Для этого выполняем еще 2 запроса:

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

Конечно же, перед выполнением этих запросов лучше сделать резервную копию базы данных.

На этом все. Надеюсь статья была полезной для Вас. Всем удачи!!!