В WordPress есть функциональность хранения старых версий ( "ревизий" или редакций- 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 от старых версий статей
Остается добавить, что хранить версии статей хотелось бы более управляемо. Идеально было бы иметь возможность сохранения и удаления конкретной версии, а не всех последних версий.