Редакции записей в WordPress: их настройка и удаление

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

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

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

Если вы ищете функцию, которая поможет вам удалять посты (записи, страницы, редакции, медиафайлы) непосредственно через код, смотрите wp_delete_post().

Интервал автосохранения постов

Чтобы задать собственный интервал сохранения редакций, добавляем эту строчку в wp-config.php

define('AUTOSAVE_INTERVAL', 300 );  // интервал в секундах

Полностью отключаем редакции постов

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

Скриншот метабокса с редакциями моего прошлого поста:

редакции постов в WordPress

Многовато. Тут немного по-английски, потому что на своем блоге я не использую локализаций.

Короче чтобы полностью отключить редакции, засунем этот код в wp-config.php:

define('WP_POST_REVISIONS', false ); // запретить ревизии постов

или этот:

define('WP_POST_REVISIONS', 0 );

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

Лично я не стал полностью избавляться от редакций, а лишь ограничил их количество, а то 40+ штук к каждому посту — это уже перебор 🙂

define('WP_POST_REVISIONS', 10); // укажите максимальное число создаваемых редакций

Удаление всех редакций

Можно конечно выполнить запрос через phpMyAdmin, но есть и более действенный способ, не зависящий от префикса базы, просто вставляем этот код в functions.php текущей темы:

global $wpdb;
$wpdb->query(
	"
	DELETE a,b,c FROM $wpdb->posts a  
	LEFT JOIN $wpdb->term_relationships b ON (a.ID = b.object_id)  
	LEFT JOIN $wpdb->postmeta c ON (a.ID = c.post_id)  
	WHERE a.post_type = 'revision'
	"
);
// как только редакции исчезнут, код нужно удалить

Этот запрос также удаляет все данные редакций из wp_term_relationships и из wp_postmeta (префикс может быть и не wp_), хотя честно говоря я не уверен, что при создании редакций в эти таблицы что-то записывается, однако это может зависеть от способа реализации собственных метабоксов.

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии — 10

Комментирование этого поста более не доступно.
  • Наталья 31 июля 2014 #

    Добрый день!
    Извините, может быть вопрос глупый, но я не нашла wp-config.php - где это? И в какое конкретно место нужно вставить define('WP_POST_REVISIONS', 0 ); ? Очень хочу избавиться от редакций статей.

    • Миша 31 июля 2014 #

      Добрый день!

      wp-config.php - где это?

      У вас есть доступ к сайту по ftp?

    • Миша 31 июля 2014 #

      define('WP_POST_REVISIONS', 0 );

      Да можете в конец файла вставить и будет норм.

  • Наталья 31 июля 2014 #

    тема простая стандартная Twenty Eleven

  • Наталья 1 августа 2014 #

    Спасибо Миша, что откликнулись. К сожалению такие понятия как ftp мне не понятны, ПК на уровне пользователя. У меня доступ к сайту полный. Зашла на хостинг нашла wp-config.php! Посмотрела этот файл, вставила define('WP_POST_REVISIONS', false ); перезагрузила на хостинге - редакции действительно исчезли. Новую запись меняй сколько хочешь. Но старую страницу смотрю, там исчезли и редакции, которые уже были. А я их не чистила. Тут меня сомнение взяло - может ли такое быть, что где-то копии все же будут сохраняться? Ну у меня а вордпресе в админке исчезли, а где-то они все же будут копиться? Или новые записи действительно в единственном числе будут?

    • Миша 2 августа 2014 #

      Нет, нигде не будут копиться, всё ок. Можете также проверить, остались ли редакции у вас на сайте при помощи плагина WP-Cleanup.

  • Наталия Матвеева 15 октября 2015 #

    Здравствуйте, Миша!

    Есть плагин для этих целей.

    https://wordpress.org/plugins/better-delete-revision/

    Стоит ли его использовать?

    • Миша 16 октября 2015 #

      Здравствуйте!
      Сам им не пользовался.

  • Rad 17 января 2020 #

    Доброго времени суток, установил AUTOSAVE_INTERVAL 20 сек, WP_POST_REVISIONS включен, кол-во ревизий ограничил до 10, у меня вопрос, почему при редактировании записи она не сохраняется автоматически, если создаешь новую запись и выходишь, то она сохраняется в черновики, в когда уже имеется запись и что-то в ней редактируешь, то при обновлении или выходе с неё, только браузер посылает уведомление, что Возможно, внесенные изменения не сохранятся, но сама запись автоматом не сохраняется, подскажите как это сделать?

    • Миша 18 января 2020 #

      Доброго времени суток,
      🤔🤔🤔