Как отключить и удалить редакции (ревизии) в WordPress

Разместил: Юрий | 21.10.2015
15 комментариев

Всем привет, дорогие мои читатели In4wp.ru. Не так давно мы разбирали тему как ускорить блог на wordpress. Но вот буквально на днях мне пришлось добавить еще один способ к этой статье. Крайне эффективный, когда вы ведете своё блог длительное время при условии, что этой фишки вы не знали.

Эти так называемые ревизии или по-другому редакции существуют еще со старых версий cms wordpress.

Зачем нужны ревизии постов?

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

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

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

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

Вот вам пример из жизни. У меня в среднем на блоге было 4-5 ревизий каждой статьи. Представьте когда у вас будут сотни статей написано, а возможно, тысячи статей — удалив ревизии (редакциИ) постов — вы тем самым ускорите свой блог в 5 раз.

А что если у вас не 5 редакций, а 10 к каждому посту? Кстати, сколько у вас, если не секрет? Напишите об этом в комментариях пжлст.

Кстати, самое интересно, что когда вы даже не нажимаете на кнопку «Сохранить» — у вас ревизии постов создаются автоматически. Это называется автосохранение.

Читайте также:  Какие вы знаете типы шаблонов Wordpress ?

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

<

Как можно ограничить количество редакций постов?

Мы уже знаем, что все редакции хранятся в базе данных. Чтобы их количество изменить, нам пригодится стандартный «фильтр», который называется так 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-&gt;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 ;
}
add_filter( 'wp_revisions_to_keep', 'my_revisions_to_keep' );

 

Или с помощью файла wp-config.php:

 

define( 'WP_POST_REVISIONS',  );

 

Самое главное. Отключение ревизий — никак не повлияет на их существование (уже существующих). т.е. если у вас было к каждой статье по 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%');

 

Ну и естественно, удаляем сами редакции (ревизии).

 

 

Этот запрос в MySQL удалит вообще все ревизии что есть в вашей базе. Кроме автосохранений.

Автосохранение — тоже считается ревизией, но они не удаляются и не отключаются!! Поэтому чтобы их было как можно меньше — пишите тексты заранее в ворде, а потом просто вставляйте в админку!

Небольшое напоминание о том как работать с MySQL

Если вдруг забыли.

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

Заходим в phpMyAdmin в вашей контрольной панели управления хостингом.

phpmyadmin для ревизий постов
Вводим логин и пароль.

revis2
Выбрали нужную нам базу данных и нажали кнопку SQL , которая находится сверху.

sql ревизии
И мы видим большое поле для того чтобы писать SQL запросы. Для всей БазыДанных.

панель для ревизий
Туда мы и вписываем все запросы по порядку.

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

А вот что я получил, используя последний запрос.

1000 ревизий
Посмотрите как после этого мой блог стал шустрее. Это же сказка просто!

Я уверен, что тоже самое есть и у вас! Проверьте и отпишите мне потом об этом.

Плагин для работы с редакциями постов

Могу посоветовать еще плагин Revision Control, он позволяет сделать тоже самое что я описал, только в более комфортном для вас режиме. Прямо в админке.

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

[bye]

<

15 комментариев

  1. Александр

    Эти самые ревизии ужасно забивают базу данных. У меня на блоге не так много записей а база данных уже почти 9 мегабайт. Ужас просто! Нужно срочно принимать меры и отключать ревизии

    Ответить
    1. Сергей Оксак

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

      Ответить
    2. Сергей Оксак

      Кстати, если у вас в базе данных нестандартный префик (т.е. не wp_), будет выдавать ошибку.Чтобы все было хорошо, меняйте везде WP_ на свой, который прописан в настройках или придуман вами

      Ответить
  2. Александр

    Денис, я попробую через плагин, посмотрю что получится, а в плагине есть какие настройки??

    Ответить
    1. Денис Тумилович

      С плагином знаком только по наслышке. Буду рад если вы более детально распишите как он работает. Сам я руками через базу всё убирал. Если вам нужно помощь в этом деле — обращайтесь.

      Ответить
      1. Александр

        Денис, плагин установил настройки простые выбрал сохранять количество копий 2 . Завтра буду писать статью посмотрю сколько сохраненных копий будет,

        Ответить
  3. Сергей Оксак

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

    Ответить
  4. Надежда

    Я для чистки использую плагин WP Clean Up, когда надо включаю, потом выключаю.
    А можно еще отключить HeartBeat API, отключив функцию автосохранения.

    Ответить
  5. Ольга

    Так я не пойму, ревизии это хорошо или плохо?

    Ответить
    1. Сергей Post author

      ну конечно удалять

      Ответить
    2. Сергей Post author

      их нужно удалять ради экономии дискового пространства на сервере или же ограничить их количество до минимума.

      Ответить
    3. Сергей Post author

      читайте коммент ниже от Александр

      Ответить
    4. Сергей Оксак

      Это плохо, зачем нужны разные варианты статьи, если уже есть опубликованная…Желательно удалять, чтобы было больше места на сервере…

      Ответить
  6. Сергей

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

    Ответить
    1. Денис Тумилович

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

      Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *