Управление версиями (редакциями)


В WordPress 2.6 появилась функциональность хранения старых версий  ( "ревизий" или редакций- REVISIONS) статей. На странице редакции можно просматривать версию статьи и сравнивать ее с другими версиями. Но здесь яно не хватает опции удаления редакции.

Дело в том, что количество версий записи или страницы увеличивается при каждом ее обновлении и может быть очень большим (представьте, как это забивает базу данных!). Помимо этого хранится еще одна перезаписываемая версия, создаваемая автосохранением. Если во время создания статьи во встроенном редакторе WordPress какие-то из этих версий и могут пригодиться, то для опубликованной статьи вряд ли стоит хранить старые версии, разве что некоторые из них.

В WordPress хранение версий можно или отключить совсем или ограничить. Для этого в файле wp-config.php раскомментируйте (или добавьте, если ее там нет) строку

define('WP_POST_REVISIONS', 5); // управление количеством ревизий...

0 (или false)-отключает ревизии (автосохранение остается в любом случае!)
-1 (или true, по умолчанию) - хранить все версии
целое число > 0 - максимальное количество хранящихся версий (старые версии удаляются)

Здесь же можно раскомментировать (или добавить) строку

define( 'AUTOSAVE_INTERVAL', 60 ); //Изменение интервала автосохранения в секундах

(60 - значение, используемое по умолчанию)

Управление версиями

Немного теории

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

'name' => "{$post->ID}-autosave",

'post_parent' => $post->ID,

'post_type' => 'revision',

'post_status' => 'inherit'

post_status ‘inherit’, тип post_type ‘revision’, и имя post_name {parent ID}- revision(-#) для обычных версий и {parent ID}-autosave для автосохранений.

По умолчанию WordPress отслеживает изменения заголовка, автора, содержания и цитаты.

Плагины

  • Delete-Revision - удаление старых версий; есть функция оптимизации базы данных.
  • Revision Control (для WordPress 2.9+) позволяет изменять количество хранящихся версий не только глобально (Settings -> Revisions), но также и для отдельных записей и страниц через поле Revisions Meta. Кроме того, позволяет удалять конкретные версии через поле метаданных Revisions post metabox.
  • Управление версиями (файл rc_revmngr)-настройки количества хранимых версий и удалений всех версий или всех версий выбранной записи или страницы (Загрузить с сайта автора).

Изменять настройки блога любой плагин сможет, если только файл wp-config.php доступен для записи, т.е. права на доступ (разрешения) для этого файла придется изменять на 646 и потом снова изменять на 644 (нельзя же оставлять его постоянно доступным для записи, это небезопасно!).

Удаление старых версий вручную

Удалить накопившиеся ревизии можно вручную с помощью SQL-запроса (!сначала не забыть сделать резервную копию базы данных!)

DELETE FROM wp_posts WHERE post_type = 'revision';

или более сложнго запроса, чтобы также удалить связанные данные:

DELETE `p`, `pm`, `c`, `tr`
FROM `wp_posts` AS `p`
LEFT JOIN `wp_postmeta` AS `pm`
ON `p`.`ID` = `pm`.`post_id`
LEFT JOIN `wp_comments` AS `c`
ON `p`.`ID` = `c`.`comment_post_ID`
LEFT JOIN `wp_term_relationships` AS `tr`
ON `p`.`ID` = `tr`.`object_id`
WHERE
`p`.`post_type` = 'revision';

//оптимизация таблиц
OPTIMIZE TABLE
`wp_posts`,
`wp_postmeta`,
`wp_comments`,
`wp_term_relationships`;

здесь wp_ - это префикс базы данных (если у вас он другой - замените)

Источник: Чистим базу данных WordPress 2.6 от старых версий статей


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

Опубликовано в рубрике Оптимизация WordPress | с метками . |

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

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