Главная · Обновление  · Функционал истории изменений (ревизий) в WordPress: как работать с ним. Как отключить и удалить все редакции в 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 существуют уже давно. Они позволяют сохранять резервную копию записи или страницы при каждом изменении, а затем просматривать все версии с возможностью восстановить любую из них.

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

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

Для отключения ревизий WordPress открываем файл wp-config.php, он лежит в корне вашего сайта.

Заходим в него и дописываем следующие строчки:

define("WP_POST_REVISIONS", 0);

Число в скобках показывает, сколько ревизий разрешено делать для одной записи. Еще можно указать интервал автосохранения в секундах (по умолчанию 60).

Что такое ревизии wordpress и зачем они нужны?

Ревизии – это резервное сохранения записи (поста) в вордпресс, которое выполняется движком в автоматическом режиме.

Я думаю, вы видели, что во время публикации нового поста на блоге, в админке, при редактировании записи, кнопка «Опубликовать» время от времени становится не активной. Так вот, как раз таки в этот момент wordpress выполняет ревизию.

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

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

Кстати, список всех ревизий вы можете посмотреть всё там же - в админ панели вордпрес. Они находятся чуть ниже редактируемой записи:

Здесь у вас может возникнуть вопрос: раз ревизии такие полезные, то почему же их нужно удалять? Поясняю.

Дело в том, что такие резервные копии постов, существенно раздувают базу данных, они, можно сказать, забивают её лишним мусором, от которого нужно избавляться. Ведь подумайте сами, когда вам нужно в запись внести много изменений, вы её редактируете, а в это время wordpress сохраняет одну за другой старые копии постов. Эти копии складывают в базу и увеличивают её размер. А ведь если так разобраться, то они нам, по сути не нужны, ну разве что последние 2-3 копии, а все остальные нет. Поэтому, естественно от таких вещей нужно избавляться, в этом случаи и база данных станет полегче и вордпресс будет шустрей работать.

Удаляем ревизии wordpress

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

Первый способ – SQL запрос к базе данных. Первым делом я вам рекомендую сделать резервное копирование базы данных, на той случай если вы сделаете что-то не так, чтобы вы могли быстро восстановить все данные.

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

После этого в верхней панели переходим во вкладку SQL и в появившееся поле вставляем вот эту запсь:

DELETE FROM wp_posts WHERE post_type = “revision”;

Запрос к базе данных

Если вы все сделаете правильно, перед вами появится надпись, которая будет сигнализировать об успешном удалении ревизий с базы. Сообщение об успешном выполнении SQL запроса

Второй способ – Используем плагин Revision Control . Здесь все просто, сначала скачиваем плагин, далее устанавливаете его. Поле установки в панели «Инструменты» у вас появится еще один раздел - «Revision Control », плагин очень прост и разобраться в нем я думаю у вас не составит не какого труда.

Вот и все, ревизии удалены!!!

Это два самых основных способов для очистки базы данных от ревизий. Есть, конечно же, еще несколько плагинов, которые позволяют выполнить данную манипуляцию (если конкретней, то это DelRevision и WP_Optimize ) но я думаю, что этих двух способов вам хватит с полна.

Еще хочется сказать, что у вас также имеется возможность и вовсе запретить wordpress делать ревизии. Правда здесь всегда нужно иметь ввиду, что в случаи форс мажорной ситуации восстановить потерянные данные вам не удастся.

Для того чтобы запретить резервное сохранение данных вам необходимо произвести ряд действий, а именно:

Перейти на хостинг в файловый менеджер (или же связаться с хостингом через FTP клиент).

Найти на сервере папку wp-includes (как правило, она находится в корневой директории вашего сайта /ваш сайт/wp-includes.)

В папке wp-includes найти файл default-constants.php и открыть его в текстовом редакторе.

В данном файле найти надпись:

define(‘WP_POST_REVISIONS’, true);

И заменить её на:

define(‘WP_POST_REVISIONS’, false);

Всё, после этого ревизии wordpress будут отключены!