Редакции WordPress, ревизии и автосохранение. Удаляем старые редакции и освобождаем место в базе данных Wordpress Как работать с историей изменений в WordPress

Здравствуйте уважаемые читатели. Сегодня я бы хотел поговорить о редакциях в 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%");

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

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

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

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

Софт для Windows