• Функционал истории изменений (ревизий) в WordPress: как работать с ним. Удаляем старые редакции и освобождаем место в базе данных Wordpress Редакции 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 ненужных мне ревизии. Мета-данных и таксономии, связанных с ревизиями, создано не было.

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

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

    Как избавиться от старых редакций

    Некоторые люди не любят хранить все эти старые версии в своей базе данных. Они считают, что они замедляют их сайт. Это, однако, миф.

    Разработчик WordPress Mike Little в комментарии на сайте WPBeginner ответил, "Запросы WordPress к базе данных не получают редакции, поэтому количество редакций не влияет на скорость выполнения запросов. Единственный раз когда редакции загружаются на страницу, это при редактирования отдельного поста. И это не влияет на скорость загрузки страниц вашего сайта. "

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

    Если вы один из них, то один из трех плагинов приведенных ниже, поможет вам сделать это.

    1. Better Delete Revision

    Better Delete Revision удаляет старые версии постов, а также оптимизирует вашу базу данных.

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

    Посмотрите на страницу настроек плагина, а также процесс удаления.

    Плагин отличается от Better Delete Revision тем, что он не выполняет групповое удаление ваших редакций, однако, это даст вам две функции, которые Better Delete Revision не имеет.

    Он позволяет сначала определить сколько редакций было сохранено.

    И это позволяет вам удалять отдельные редакции на странице редактирования.

    3. Revision Cleaner

    Плагин Revision Cleaner позволяет каждому пользователю установить интервал времени для автоматического удаления его редакций. Это можно сделать на странице профиля пользователя.

    Речь в сегодняшней статье пойдет про ревизии WordPress .

    Ревизии WordPress — это автосохранения постов при редактировании. С одной стороны, это отличная функция: например, пишите вы статью не один час, как вдруг отключили электричество в квартире, или браузер завис, либо вкладку случайно закрыли… Когда у меня такое случилось первый раз, в голову сразу пришли мысли о том, как мне заново придется набирать текст, выравнивать изображения, в общем, делать все заново, но не тут-то было! WordPress автоматически сохранил весь мой пост! Не поверите, на сколько я был благодарен разработчикам за такую функцию.

    Но есть и обратная сторона медали. По умолчанию, ревизии WordPress делаются каждые 60 секунд, и каждая ревизия записывается в базу данных. А теперь посчитайте, сколько у вас, в среднем, ревизий на пост и умножьте на количество постов в блоге. Дико много! Размер базы данных может на половину состоять из ревизий. У меня именно так и было. Посмотрите как уменьшился размер БД после удаления всех ревизий. В два раза!

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

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

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

    define("WP_POST_REVISIONS", 0);

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